常用指令
显示版本 SELTCT VERSION(); 显示当前日期 SELECT NOW(); 显示当前用户 SELECT USER();
语句规范
1关键字与函数名称全部大写 2数据库名称,表名称,字段名称全部小写 3SQL语句必须以分号结尾
创建数据库 CREATE DATABASE t1;
修改数据库 ALTER DATABASE t1 CHARACTER SET=UTF8;
删除数据库 DROP DATABASE t1;
TINYINT 字节1
SMALLINT 字节2
MEDIUMINT 字节3
INT 字节4
BIGINT 字节8
添加外键约束:ALTER TABLE users2 ADD FOREIGN KEY(pid) REFERENCES provinces (id);
添加默认约束:ALTER TABLE users2 ALTER age SET DEFAULT 15;
删除默认约束:ALTER TABLE users2 ALTER age DROP DEFAULT;
显示索引:SHOW INDEXES FROM province;SHOW INDEXES FROM province\G;(以网格呈现)
打开数据表test:USE test;
查看创建命令:SHOW CREATE TABLE province;
查看数据表结构:SHOW COLUMNS FROM tb3;
插入记录:INSERT [INTO] tb1_name [(col_name,…)] VALUES (val,…);
查看数据表列表:SHOW TABLES [FROM db_name] [LIKE ‘pattern’|WHERE expr];
删除列:ALTER TABLE tb1_name DROP[COLUMN] col_name;
添加多列:ALTER TABLE tb1_name ADD[COLUMN] (col_name column_definition,…);
添加单列:ALTER TABLE tb!_name ADD[COLUMN] col_name column_definition [FIRST|AFTER col_name];
删除记录:DELETE FROM province WHERE id=3;
验证表中是否有相应的记录:SELECT * FROM province;
查看数据表是否存在:SHOW TABLES;
显示已经打开的数据库:SELECT DATABASE();
查看数据表结构:SHOW COLUMNS FROM ***(数据表名);
插入数据:INSERT ***(数据表名) (,) VALUES(数据);
记录查找:SELECT * FROM ***(数据表名)
显示数据表的信息:SHOW CREATE TABLE ***(数据表名)
显示索引:SHOW INDEXES FROM ***\G(数据表名)
约束和索引, 前者是用来检查数据的正确性,后者用来实现数据查询的优化,目的不同。
唯一性约束与唯一索引有所不同:
(1).创建唯一约束会在Oracle中创建一个Constraint,同时也会创建一个该约束对应的唯一索引。
(2).创建唯一索引只会创建一个唯一索引,不会创建Constraint。
也就是说其实唯一约束是通过创建唯一索引来实现的。
在删除时这两者也有一定的区别:
删除唯一约束时可以只删除约束而不删除对应的索引,所以对应的列还是必须唯一的,
而删除了唯一索引的话就可以插入不唯一的值。
大家注意,如果只想修改列的名称,那么修改语句不能只写成:
ALTER TABLE tbl_name CHANGE old_col_name new_col_name;
还必须要把该列的column_definition写上(虽然你并不修改列属性):
ALTER TABLE tbl_name CHANGE old_col_name new_col_name column_definition;
插入列 INSERT 表名 VALUES();
INSERT 表名 SET COL_NAME();
语法:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1 | DEFAULT} [, col_name2={expr2 | DEFAULT}]… [WHERE where_condition]
eg:
UPDATE users SET age = age + 5, sex = 2 WHERE username=’TOM’;
drop 删除列,delete 删除数据记录.
DROP TABLE table_name;
删除没有被关联的普通表:直接上面的SQL语句就行了
删除被其他表关联的父表:
– 方法一:先删除子表,再删除父表
– 方法二:先删除父表的外键约束,再删除父表
select id,username from user 会显示id 和username 两个列而使用 select id username from user 就会显示别名
SELECT id,username,age,sex FROM users BY sex;
简单点说明吧,最后一段命令,就是sex内容为列内容,有2个字段
0 这里sex=0 有7条记录
null 这里sex=null 有1条记录
然后后面还有个count(id)>2条件限制,
0这个记录里,id的计数有7个,大于2,所以显示为sex的内容。
null这个记录里,id计数只有1个,小于2,所以不显示。、
SELECT *FROM 数据表 DROUP UP XX,YY DESC;
XX默认为升序 查询结果先按照XX升序排序 如果排序不成功 那么把排序不成功的行 按照YY的降序排序
SELECT*FROM users LIMIT 2; 表示记两条记录,第0条开始
SELECT*FROM users LIMIT 3,2; 表示在第3条开始记录,共2条记录
insert插入另一个表中的记录
INSERT test(username) SELECT username FROM users WHERE gae>=30;
test:要插入的表
users:被插入的另一个表
incorrect string value 错误的。
建表前写:
SET NAMES utf8;
建表后:
ALTER TABLES tdb_goods CHARACTER SET utf8;
录入数据前,重启MySQL一次。
我这样做以后就好了,没有乱码也没有错误了。
子查询的SELECT语句中不能使用ORDER BY子句,ORDER BY子句只能对最终查询结果排序
select goods_id,goods_name,goods_price from tdb_goods where goods_price >= (select round(avg(goods_price),2) from tdb_goods);
不是跟asc对应的降序desc。
“desc tdb_goods_cate;”与“show columns from tdb_goods_cates;”查询出来的结果是相同的。
insert into table_name (columns…) (select columns from table_name group by columns);
UPDATE goods INNER JOIN goods_cate ON goods_cate = cate_name SET goods_cate = cate_id;