SQL语言

本文详细介绍了SQL语言的基础知识,包括数据库、表、记录和字段的概念,以及如何使用DDL进行数据库定义,如创建、删除数据库和表。接着讲解了DML操作,如插入、更新和删除数据,以及DQL查询语言,包括各种查询方式和条件。最后,提到了DCL权限管理和数据库日志,以及用户管理与权限授权。内容涵盖了SQL的主要操作和在实际数据库管理中的应用。
摘要由CSDN通过智能技术生成

SQL语言

用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。

名词解释

数据库:一种容器,表的管理单元(表的集合)

表:存储数据的基本单位 记录的管理单元(记录的集合)

记录(行):字段的管理单元(字段的集合)

字段(列): 字段名 字段类型 字段约束(可选)

数据库DDL(数据库定义语言)

数据库、表、视图、索引、存储过程,例如create、drop、alter

定义库(建库)
create database bbs;
进入库
use bbs;
删除库
drop  database bbs;
数据库的位置
#rpm安装下的MySQL
[root@localhost ~]# ls /var/lib/mysql
auto.cnf  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql.sock  performance_schema
#后期备份数据库需要
定义表(建表)
create table student(id int,name varchar(20),age int , address varchar(20));
数据类型
1.数值类型
#int 整数型   float 浮点型
2.字符串类型
#char  固定字符串长度    varchar 可变字符串长度  enum('m','f') 枚举
3.时间和日期类型
查看表
show table student;
删除表
drop table student;

数据库DML(数据库操纵语言 insert into delete update)

插入数据 insert into
use bbs;
insert into student values(1,'zhangsan',13,'nanjing');
select * from student;
部分插入
insert into student(id,name) values(2,'lisi');
更新数据
update student set age=55 where id=2;
Query OK, 1 row affected
Time: 0.001s
MySQL root@localhost:bbs> select * from student;
+----+------+-----+---------+
| id | name | age | address |
+----+------+-----+---------+
| 2  | lisi | 55  | <null>  |
+----+------+-----+---------+

#更新root用户密码
update mysql.user set authtication_string=password('123456') where user='root';
                                          #调用函数 加密处理
删除数据
delete from student where id=2;

数据库DQL(数据库查询语言select desc)

查看表框架 desc
MySQL root@localhost:bbs> desc student;
 #字段名      #类型        #约束(为空、主键、默认值、额外约束)
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id      | int(11)     | YES  |     | <null>  |       |
| name    | varchar(20) | YES  |     | <null>  |       |
| age     | int(11)     | YES  |     | <null>  |       |
| address | varchar(20) | YES  |     | <null>  |       |
+---------+-------------+------+-----+---------+-------+
简单数据库查询
1.查询整表
select  *  from 表名;
2.查询部分字段信息的记录

select 字段1,字段2 from 表名;

3.四则运算的查询

select 字段1,月薪*14 from 表名;

条件查询
1.单条件查询where

select name from employee where post=‘hr’;

2.多条件查询and /or

select * from employee where post=‘hr’ and salary>6000;

3.范围between and➡ not between 2 and 5(取反)

select * from employee where salary between 5000 and 8000;

4.关键字 in 集合查询➡not in 的引申

select * from employee where salary in (4000,5000,6000);

模糊查询
关键词like模糊查询

select * from employee where name like ‘al%’;

name alice …

排序查询order

select name salary from employee order by salary asc/desc;

asc 升序(不加 默认升序) desc 降序

过滤查询limit 看前五名

select name salary from employee order by salary desc limit 5;

limit 5,2 看6 7 两行

数据库DCL(数据库控制语言grant revoke)

权限级别

1.global level 全库 全表 权限

2.database level 具体库内全表权限 常用

3.table level 具体库内的具体表权限

4.column level 单表字段权限

mysql用户管理
用户创建
create user zhangsan@'192.168.48.101' identified by ‘密码’   
              用户名   登录地址 (localhost为本地主机,%为所有终端)
用户登录

选项

示例:mysql -P 3306 -uroot -p123123 mysql -e’show tables;’

-uzhangsan 指定用户

-p123123 密码

-P3306 端口号

mysql 直接进库

...-e 'sql语句' 免交互 编程时会用到
mysql -uroot -p123123 -e 'select user();'
mysql: [Warning] Using a password on the command line interface can be insecure.
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+

远程登录

mysql -h

mysql -uzhangsan -p密码

select user();

查看当前用户

改密码
法1:

库外:mysqladmin -uroot -p老密码 password 新密码 #password 后得有空格

法2:

库内:set password=password(123123);#调用函数,加密处理

flush privileges #刷新数据库

root密码丢失
1.vim /etc/my.cnf 
2.加 skip-grant-tables
3.重启数据库 systemctl restart mysqld
4.进入数据库 mysql -uroot
5.修改密码 update mysql.user set authentication_string=password(新密码) where user='root'     and host='localhost'
6.刷新数据库 flush privileges
7.注销配置文件的跳过设置 并重启mysqld
8.重登验证 mysql -uroot -p新密码
删除用户
drop user zhangsan@'192.168.48.101'
授权命令
grant 权限 on 库名.表名 to 'zhangsan'@'客户端' identified by '密码' with option;
权限列表

all 所有权限

select update 查询 更新

库表明细
*.* #代表全库全表

bbs.* #bbs库下全表
客户端主机
with option

一般不用

授权示例

授权admin3对bbs 所有表,具有所有权限(不包含授权)

grant all on bbs.* to admin3@'%' identified by '123123' with option;  
回收权限
show grants for 用户; 查看授权明细

MySQL root@localhost:bbt> show grants for zhangsan;
+---------------------------------------------------+
| Grants for zhangsan@%                             |
+---------------------------------------------------+
| GRANT USAGE ON *.* TO 'zhangsan'@'%'              |
| GRANT ALL PRIVILEGES ON "bbs".* TO 'zhangsan'@'%' |
| GRANT ALL PRIVILEGES ON "bbt".* TO 'zhangsan'@'%' |
+---------------------------------------------------+

MySQL root@localhost:bbt> revoke all on bbs.* from zhangsan@'%';
Query OK, 0 rows affected
Time: 0.001s
MySQL root@localhost:bbt> show grants for zhangsan;
+---------------------------------------------------+
| Grants for zhangsan@%                             |
+---------------------------------------------------+
| GRANT USAGE ON *.* TO 'zhangsan'@'%'              |
| GRANT ALL PRIVILEGES ON "bbt".* TO 'zhangsan'@'%' |
+---------------------------------------------------+

5.7版本后,drop user zhangsan ; 直接抄家

mysql日志

日志种类

error log 错误日志 /var/log/mysqld.log 默认开启

binary log 二进制日志 记录改变数据,除了select都记 主配中 log_bin 开启 /var/lib/mysql/*bin

relay log 中继日志 读取主服务器的binary log 在本地回放 保持一致

slow log 慢查询日志 主配开启 /var/lib/mysql/*slow
vim /etc/my.cnf
slow_query-log=1 开启慢查询日志
long_query-time=3 限制超三秒则记录

MySQL root@localhost:(none)> select benchmark(1000000000,2*3);
+---------------------------+
| benchmark(1000000000,2*3) |
+---------------------------+
| 0                         |
+---------------------------+
1 row in set
Time: 7.651s

ddl log 定义语句的日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值