常用sql基础语句

1.创建数据库表
创建MySQL数据表需要以下信息:
表名
表字段名
定义每个表字段
语法:
CREATE TABLE table_name (column_name column_type);

实例:
CREATE TABLE IF NOT EXISTS `t_userinfo`(
`userid` INT UNSIGNED AUTO_INCREMENT,
`username` VARCHAR(100) NOT NULL,
`age` VARCHAR(40) NOT NULL,
`mobilenum` VARCHAR(100) NOT NULL,
`job` VARCHAR(100) NOT NULL,
`createtime` DATE,
`updatetime` DATE,
PRIMARY KEY ( `userid` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,CHARSET 设置编码。


2.删除数据库表
DROP TABLE table_name ;

3.插入数据
语法:
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
实例:
insert into t_userinfo(`userid`,`username`,`age`,`mobilenum`,`job`,`createtime`,`updatetime`)
values
('qq00000123','alex','25','13500000001','产品经理','2019-07-01 10:10:23','2019-07-02 12:14:45')


4.更新数据
语法:
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
实例:
updatet_userinfo set uername='alice' where userid='qq00000123'

 

5.NULL值处理
MySQL中处理NULL使用IS NULL和IS NOT NULL运算符。
IS NULL:当列的值是NULL,此运算符返回true。
IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
<=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL时返回 true。
关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。
在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。

 

6.查询数据
select * from t_userinfo where mobilenum='13500000001';
select * from t_userinfo where mobilenum like '%135000%'; #like跟%一起使用,类似于模糊查询
select * from t_userinfo order by createtime desc; #desc降序 asc升序
select job,count(*) from t_userinfo group by job; #根据工作职位分组,统计每种职位的人数

 

7.联合查询

        

#查询出有对象的用户信息

等值连接:

 t_user.id=t_lover_info.u_id  #关联条件   

 select * from  t_user t1 join t_lover_info  t2  on t1.id=t2.u_id;   #使用 join on关联查询

 select * from  t_user t1 inner  join  t_lover_info  t2  on t1.id=t2.u_id;   #使用 join on关联查询 内连接

select * from  t_user t1 cross  join  t_lover_info  t2  on t1.id=t2.u_id;   #  cross  join on 交叉连接

 

left join on :左连接

 #左连接:读取左表全部信息,如果右表匹配上,显示右表的信息,如果右表匹配不上,右侧结果为null

#查询出所有的用户信息,及其对象信息

 select * from  t_user t1 left  join  t_lover_info  t2  on t1.id=t2.u_id ;  

 #查询出没有对象的用户信息

 select * from  t_user t1 left  join  t_lover_info  t2  on t1.id=t2.u_id    where t2.u_id is null;

#查询出有对象的用户信息

 select * from  t_user t1 left  join  t_lover_info  t2  on t1.id=t2.u_id    where t2.u_id is  not null;

 

right left on 右连接

 #右连接:读取右表全部信息,如果左表匹配上,显示左表的信息,如果左表匹配不上,以null代替

  

UNION :将两个结果集合并在一起

UNION会自动去重,UNION ALL不会去重

select  *  from  t_user,t_lover_info  where t_user.id=t_lover_info.u_id

UNION

select  *  from  t_user,t_lover_info  where t_user.id=t_lover_info.u_id;

 

having对分组的结果进行筛选,与group by语句联合使用

子查询(嵌套

#查询出每门课程都大于80分的学生姓名

select name from t_testscores group by name having min(score)>80

select name from (select name,min(score) where group by name) as t where t.min(score)>80

 

 #求最高分的成绩信息

select * from t_testscores where score in (select max(score) from t_testscores )    #非相关子查询

 

 #求每个同学最高分的成绩信息

 select name.max(score)   from t_testscores  group by name ; #常规的方法

#子查询的方法

 select * from t_testscores  where name='张三'  and score in (select  max(sroce)  from t_testscores  where name='张三' )  #先查询张三的最高分信息

 select * from t_testscores as t1  where  score in (select  max(sroce)  from t_testscores as t2  where t1.name=t2.name )   #相关子查询

 

非相关子查询:独立于外部查询,子查询只执行一次,执行完将结果传递给外部查询

相关子查询:依赖于外部查询的数据,外部查询每执行一次,子查询就执行一次

 

 

9.ALTER命令

删除表字段:
alter table t_userinfo drop age;
增加表字段:
alter table t_userinfo add age INT;
#常用数据类型:INT或INTEGER、BIGINT、FLOAT、DOUBLE
修改字段:
alter table t_userinfo modify age INT(30);
alter table t_userinfo change age BIGINT;
修改表名:
alter table t_userinfo rename to t_userinfo_1;
添加主键:
alter table t_userinfo add primary key(i);
删除主键:
alter table t_userinfo drop primary key;

转载于:https://www.cnblogs.com/lijinping716/p/11561017.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值