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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值