Do what you say,say what you do.
常用语句
创建-删除数据库
- 创建数据库
CREAT DATABASE <表名>;
或CREAT DATABASE IF NOT EXISTS <表名>;
- 删除数据库
DROP DATABASE <表名>;
或DROP DATABASE IF EXISTS <表名>;
创建-更改-删除表
- 创建表
方法一:直接创建表
CREATE TABLE +表名
或
CREATE TABLE IF NOT EXISTS +表名
CREATE TABLE <表名> ( 列名 类型 其他属性, 列名 类型 其他属性, 列名 类型 其他属性 );
属性:
- 默认:DEFAULT
- 非空:NOT NULL
- 唯一值:UNIQUE
- 主键:PRIMARY KEY
- 自动增加:AUTO_INCREMENT
CREATE TABLE [IF NOT EXISTS] table_name -- 不存在才创建,存在就跳过 (column_name1 data_type1 -- 列名和类型必选 [ PRIMARY KEY -- 可选的约束,主键 | FOREIGN KEY -- 外键,引用其他表的键值 | AUTO_INCREMENT -- 自增ID | COMMENT comment -- 列注释(评论) | DEFAULT default_value -- 默认值 | UNIQUE -- 唯一性约束,不允许两条记录该列值相同 | NOT NULL -- 该列非空 ], ... ) [CHARACTER SET charset] -- 字符集编码 [COLLATE collate_value] -- 列排序和比较时的规则(是否区分大小写等)
方法二:从另一张表复制表结构创建表
CREATE TABLE table_name LIKE table_name_old
方法三:从另一张表的查询结果创建表
CREATE TABLE table_name AS SELECT * FROM table_name_old WHERE options
2、更改表
ALTER TABLE +表名
添加列:ADD
修改:MODIFY
删除列:DROP
该列名:CHANGE
alter table user_info add school varchar(15) after level; #增加列在某列之后 alter table 增加的表格 add 增加列的名称 数据类型 位置(after level 在level 之后) alter table user_info change job profession varchar(10); #更换列的名称及数据类型 alter table user_info change 原列名 修改列名 修改数据类型 alter table user_info modify achievement int(11) default 0; #更改数据类型 alter table 表名 modify 修改列名称 数据类型 默认值等
- 删除表
DROP TABLE [IF EXISTS] 表名1 [, 表名2]
插入-更新-删除数据
- 插入单行
INSERT INTO +表名 VALUES (值1,值2,值3……)
注意:所有列字段都要赋值
或
INSERT INTO +表名(列名1,列名2,列名3……) VALUES (值1,值2,值3……)
2、插入多行
INSERT INTO <表名>(列1,列2,列3……) VALUES (值1,值2,值3……), (值1,值2,值3……), (值1,值2,值3……) ……;
- 更新单行
UPDATE <表名> SET 列1 = 值1,列2 = 值2,…… WHERE+条件
update invoices set payment_total = default, payment_date = null where invoice_id = 1
4、更新多行
只需将“更新单行”WHERE
语句修改即可
5、删除行
方法一:根据条件删除
delete from table_name where 条件 order by 列名 limit 行数
方法二:全部删除(表清空,包含自增计数器重置)truncate table_name
delete from invoices where client_id = ( select * from clients where name = 'Myworks' )
常用聚合函数
- SUM()–求和
- AVG()–平均值
- MAX()–最大值
- MIN()–最小值
- COUNT()–计数,不计算空值
- COUNT(*)–计数,计算所有行
- COUNT(DISTINCT key word)–去除重复值计数
- ORDER BY --升序
- ORDER BY…DESC --降序
- WHERE --分组之前筛选数据
- HAVING --分组之后筛选数据
select client_id, sum(invoice_total) as total_sales, count(*) as number_of_invoice from invoices group by client_id having total_sales > 500 and number_of_invoices > 5;
- ROLLUP–在最后一行加一行每个组或者整个结果集的汇总值
select state, city, sum(invoice_total) as total_sales from invoices i join clients c using (client_id) group by state,city with rollup
13、EXISTS–代替IN
,效率高
——IN
运算符中的子查询,会生成大量结果集;EXISTS
中子查询的结果没有直接返回外部的查询,故而使用EXISTS
效率更高。
select * from clients c where exists( select client_id from invoices where client_id = c.client_id )
#--------Select clients that have an invoice select * from clients where client_id in ( select distinct client_id from invoices )
thank for your patience~