mysql

  • Post author:
  • Post category:mysql


常用指令

显示版本 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);






































desc 应该是description,与show columns一样都是对所建表的描述。

不是跟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;
















版权声明:本文为jialeJSP原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。