MySQL的基本语句(一)
SQL DML 和 DDL
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
查询和更新指令构成了 SQL 的 DML 部分:
- SELECT - 从数据库表中获取数据
- UPDATE - 更新数据库表中的数据
- DELETE - 从数据库表中删除数据
- INSERT INTO - 向数据库表中插入数据
SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL 中最重要的 DDL 语句:
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
-
创建表
CREATE TABLE tb_name( id int NOT NULL AUTO_INCREMENT, # 非空、自增声明 name VARCHAR(30) UNIQUE, #添加字段的唯一约束 update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, #设置时间戳默认值为当前时间 last_updated TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,#设置自动添加更新时间 size ENUM( 'small', 'medium', 'large') DEFAULT 'small', #枚举类型声明 PRIMARY KEY (id), #主键声明 FOREIGN KEY (id) REFERENCES db_name(tb_field) #声明外键 );
-
插入数据
# 插入数据 INSERT INTO tb_name VALUES ('Gates', 'Bill', 'ACC', 'Beijing'); # 插入指定列的数据 INSERT INTO tb_name (tb_field1, tb_field2) VALUES ('Gates', 'Bill');
-
数据查询
# 基本查询 SELECT * FROM tb_name; SELECT * FROM tb_name WHERE id = XXX; # MD5 加密,加密比较 INSERT INTO user(name,password) VALUES("admin",md5("12345")); SELECT * FROM user WHERE name="admin" AND password=md5("12345"); # 查询最 新 的一条数据 1) SELECT * FROM tb_name ORDER BY date DESC LIMIT 1; 2) SELECT * FROM tb_name WHERE date IN (SELECT max(tb_field) FROM tb_name); 3) SELECT * FROM tb_name WHERE date = (SELECT max(tb_field) FROM tb_name); # 查询记录总数 SELECT count(*) FROM tb_name; # 查询前十条数据 SELECT * FROM tb_name LIMIT 10; # 查询平均值 SELECT AVG(tb_field) FROM tb_name; SELECT name, AVG(tb_field) FROM tb_name GROUP BY name;
-
修改数据
- 数据修改
UPDATE tb_name SET tb_field1 = 'One', tb_field2 = 'Two' WHERE tb_field3 = '111';
- 属性修改
# 添加列 ALTER TABLE tb_name ADD COLUMN state ENUM('1','0') NOT NULL DEFAULT '1'; # 添加唯一約束 1) ALTER TABLE tb_name ADD UNIQUE (name); 2) CREATE UNIQUE INDEX [索引名称] ON tb_name(tb_field); # 更改列属性 ALTER TABLE tb_name MODIFY COLUMN tb_field VARCHAR(50); # 更改列名 ALTER TABLE tb_name RNAME COLUMN tb_fieldA to tb_fieldB; ALTER TABLE tb_name CHANGE tb_fieldA tb_fieldB varchar(255);
-
删除数据
# 删除一个记录 DELETE FROM tb_name WHERE name = 'Bill'; # 删除所有行 DELETE FROM tb_name; # 删除表 DROP TABLE tb_name; # 删除数据库 DROP DATABASE db_name; # 删除索引 ALTER TABLE tb_name DROP INDEX [索引名称]; # 删除列 ALTER TABLE tb_name DROP COLUMN column_name;
-
其他
# 导出数据库 mysqldump -u [用户名] -p [数据库名] > [导出的文件名] mysqldump -u username -p db_name > db_name.sql; # 导出数据表 mysqldump -u username -p db_name tb_name> db_name.sql; # 导入数据库 1) mysql -u username -p db_name < [xxx.sql]; 2) use db_name; source xxx.sql;