怎么用代码创建数据库
直接跑一句CREATE DATABASE,用代你的码创数据库就诞生了。别想复杂了,建数据库这事本质上跟你在电脑上新建一个文件夹没区别——只不过这个文件夹里的用代数据能被高效查询、更新、码创删除。建数据库我见过太多人把这事神化,用代其实你打开终端,码创敲下mysql -u root -p,建数据库输入密码,用代然后输入CREATE DATABASE shop;,码创回车,建数据库一个叫shop的用代数据库就躺在你服务器里了。
但光建库不够,码创你得在里面建表。建数据库表才是真正装数据的地方。拿MySQL举例:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); 这段代码定义了一张用户表,四个字段。id是自增主键,name不能为空,email不能重复,created_at自动记录插入时间。你看,代码自己就能说明一切,不需要额外解释。执行完,用DESCRIBE users;看一眼,表结构就清清楚楚列出来了。
PostgreSQL的写法略有不同,但思路一样:CREATE TABLE products (id SERIAL PRIMARY KEY, title TEXT, price NUMERIC(10,2));。SERIAL就是自增,TEXT是变长文本,NUMERIC(10,2)表示最多10位数、保留2位小数。不同数据库的关键词有差异,但核心逻辑没变——你要定义“这个表里有什么列,每列存什么类型的数据”。
SQLite更轻量,它不要求你先建库。你直接sqlite3 myapp.db,然后执行建表语句,数据库文件就自动生成了。这玩意适合做本地原型或小工具,我经常用它做测试,因为不用启动服务,一个文件搞定。但生产环境还是得用MySQL或PostgreSQL,毕竟并发和性能摆在那。
建完之后,你可能会想删掉某个表或改结构。那就用DROP TABLE users;——但小心,这命令会把表连同数据一起删掉,连确认都不问。我当年实习时手滑执行过一回,那滋味真不好受。所以删表前,务必先SELECT COUNT(*) FROM users;看看里面有没有重要数据。更稳妥的做法是先RENAME TABLE users TO users_backup;,确认没问题再彻底删除。
还有个容易被忽略的点:字符集和排序规则。中文环境下,建库时最好加上DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci。不然你插入“你好”可能变成乱码,或者查询时大小写不敏感导致结果不对。这问题在MySQL里尤其常见,PostgreSQL默认就是UTF-8,反而省心。
最后提醒一句:别在线上环境直接跑建表语句。写个迁移脚本,或者用ORM框架的同步功能。原因很简单——线上数据经不起折腾,一个语法错误就可能锁表。我习惯把建表语句存成.sql文件,用SOURCE schema.sql;执行,这样出问题还能回滚。代码建库这事,说穿了就是“定义结构 + 执行命令”两步。但每一步的细节,决定了你是做个能跑的demo,还是做个能扛住百万级流量的系统。
