须知:
SQL语言:结构化查询语言,是关系型数据库查询语言的标准,不同的数据库虽然有自己私有扩展,但关键词都支持:(select、update、delete、insert、where)
SQL语句分类:像Oracle、MSSQL都是通用的
DDL:数据定义语言(create、alter、drop、rename)
DML:数据库维护语言(select、insert、update、delete)
DCL:数据库控制语言,权限(Grant、revoke)
TCL:事务控制语言(commt、sarepqint):新型的语句
一、数据库增删改查
根据这个表结构以下来操作:
mysql> select * from user;
+----+----------+------+
| id | name | pass |
+----+----------+------+
基本操作
1.创建数据库
create database name;
2.删除数据库
drop database name;
3.创建一个用户表
create table user(id int,name varchar(30),pass varchar(30));
4.插入数据
insert into user(id,name,pass) values("1","zhangsan","123");
5.删除一个表
drop table user;
6.查看表字段
desc table user;
7.查看表数据
select * from user;
8.修改表名
rename table user to tab1;
9.更新数据
update user set pass="newpass" where pass=123; #把密码更新为newpass
update user set id=10,name='lisi' where id=1; #把id记录的name更新为id10和name为lisi
10.重命名字段名
alter table user change pass newname varchar(30);
11.表中添加一个字段
alter table user add age int;
12.修改字段
alter table user modify age int no null default 20; #当年龄输入为空时,默认为20岁
13.删除表中的一个字段
alter table user drop age;
14.删除一条记录
delete from user where id=1;
15.查找一条记录
select id,name,pass from user where id=1;
16.删除ID记录
delete from user where id>=3 id<=5; #删除大于3小于5的id
delete from user where id in(1,3,5); #删除1,3,5的id
delete from user where id=1 or id=3 or id=5; #删除1,3,5的id
delete from user where id between 1 and 5; #删除1至5的id
高级查询
1.返回结果删除重复项
select distinct id from user;
2.查询字段中为NULL
select * from where pass is null;
select * from where pass is not null; #查询不为NULL的
3.like模糊查询,包含zhang的列出来
select * from user where name like '%zhang%';
select * from user where name like '%zhang%' or name like '%li%';#查找包含zhang或li的列出来
也可以使用正则表达式查询,生产环境一般不用的,因为查询慢,效果一样
select * from user where name regexp 'li';
4.使用order by对查询结果排序(升序/降序),默认是升序
select id,name,pass from user order by id asc/desc;
5.使用limit取出排名前三个
select * from user order by id desc limit 3;
6.concat函数使用-字符串连接符
mysql> select id,name,pass,concat(id,'_',name) idname from user;
+----+----------+------+------------+
| id | name | pass | idname |
+----+----------+------+------------+
| 1 | zhangsan | 123 | 1_zhangsan |
| 2 | lisi | 123 | 2_lisi |
| 3 | zhaowu | 123 | 3_zhaowu |
+----+----------+------+------------+
7.rand函数随机排序,如随机抽取前三名
select * from user order by rand() limit 3;
8.count统计,如统计多少个id记录
select count(*) count from user;
#count为自定义显示查询结果后字段名,*为mysql优化后的查询方法,要比直接写入id效率高
select count(id) from user where name='zhangsan'; #统计zhangsan多少条记录
9.sum求和,如统计同消费了多少钱
select sum(id) from user where name='lisi'; #所有id数加在一起
10.avg平均数,如求班级平均分
select avg(id) from user;
11.max最大值,如得到一个最高分
select max(id) from user;
12.min最小值
select min(id) from user;
13.group by分组聚合
select name,count(id) from user group by name order by desc;
#使用count来聚合,基于name分组,再order by排序下(一般排名都使用分组聚合)
select name,count(id) count from user group by name having count>=3;
#查询前三名,having是对分组的结果进行筛选,这不能用where,count代表查询结果后显示的字段名
14.普通多表查询(前提:两个表必须有关系)
先创建两个有关系的表:
create table user(id int unsigned auto_increment primary key,name varchar(30),age int);
create table post(id int unsigned auto_increment primary key,uid int,title varchar(200),content text);
结果一:查询用户发的所有记录
select user.name,post.title,post.content from user,post where user.id=post.uid;
结果二:统计每个用户有多少个记录
select user.name,post.title,post.content count(id) from user,post where user.id=post.uid group by user.name;
15.联表查询(查询成绩)
mysql> select * from tb1;
+------+----------+
| id | name |
+------+----------+
| 1 | zhangsan |
| 2 | lisi |
+------+----------+
mysql> select * from tb2;
+------+-------+
| id | score |
+------+-------+
| 1 | 80 |
| 2 | 81 |
+------+-------+
mysql> select tb1.name,tb2.score from tb1,tb2 where tb1.id = tb2.id;
+----------+-------+
| name | score |
+----------+-------+
| zhangsan | 80 |
| lisi | 81 |
+----------+-------+
二、表字段类型
1.数值
int(size):整型,只能存整数数字,不能为空,默认允许输入null,也可以设置不允许写(not null)
float:浮点型,可以写入整数或浮点数
1.1字段属性
unsigned:无符号,全是整数
zerofill:与长度无关,不够3位时前面补0,默认看不见
null与not null:允许输入null和不允许输入
default:不允许null情况下,当输入空时,则使用默认值
auto_increment:一般自增ID
1.2示例
例如,设置id为自增:
create table user(id int unsigned auto_increment primary key,name varchar(30),pass varchar(30));
primary key:有auto_increment必须设置为主键索引,提供查询速度,再插入就不用写id列了,如果你写了,就以你写的为准,继续自增。
例如,创建一个表,当输入性别为空时,默认则为男:
create table user2(id int unsigned auto_increment primary key,name varchar(30),sex varchar(5) not null default "nan");
查看字段信息:
mysql> desc user2;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(30) | YES | | NULL | |
| sex | varchar(5) | NO | | nan | |
+-------+------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
2.字符串
char(size):占用size的字节,但查询速度快,最大支持255个字符
varchar(size):存多少占多少,剩点空间,最大支持65535个字符
text:支持65535字节
longtext:支持42亿字节
3.日期类型(有的会使用int类型来存时间戳)
以下是官方说法占用的字节,但实际会有不符。
date:年月日,占用3个字节
time:时分秒,占用3个字节
datetime:年月日时分秒,占用8个字节
year:年,占用1个字节
三、用户管理
1.设置Mysql密码
方法一:set password=password('newpass');
方法二:update user set password=password('newpass') where user='root';
方法三:grant all on *.* to 'root'@'localhost' identified by 'newpass';
再刷新:flush privileges;
2.创建用户并授权
grant all privileges on *.* to 'user'@'localhost' identified by 'pass';
*.*:对应的是数据库/表的权限
localhost:只允许本地访问,也可以设置%为所有访问
3.撤销用户权限
revoke all privileges on *.* from 'root'@'localhost' identified by 'pass';
四、数据库字符集
1.查看服务器基本信息\s
1 免责声明: ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。 ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341 软考中级精品资料免费领
相关文章发现更多好内容猜你喜欢AI推送时光机MySQL SQL使用技巧数据库2024-04-02 Mysql中写sql的技巧数据库2024-04-02 SQL数据库的使用技巧数据库2024-04-02 MS SQL使用技巧有哪些数据库2024-04-02 MYSQL sql的技巧与避坑数据库2023-08-16 PL/SQL Developer使用技巧、快捷键数据库2024-04-02 SQL中INSERT语句的使用技巧数据库2023-09-22 MySQL优化SQL语句的技巧数据库2022-05-24 mysql 使用技巧 分页limit数据库2018-05-16 科汛CMS的sql标签使用技巧数据库2022-06-12 PL/SQL DEVELOPER 使用的技巧有哪些数据库2024-04-02 MySQL聚合函数使用技巧数据库2024-10-20 MySQL的使用技巧有哪些数据库2024-04-02 mysql sql优化的技巧有哪些数据库2024-04-09 分享MySQL中锁的使用技巧数据库2023-12-21 使用Python操作MySQL的小技巧数据库2022-05-13 MySQL中的使用技巧有哪些数据库2024-04-02 MySql字符串函数使用技巧数据库2024-04-02 sql左连接和右连接的使用技巧数据库2024-04-02 咦!没有更多了?去看看其它编程学习网 内容吧 |