【MySQL】2.MySQL数据库的基本操作
目录
数据库基本操作
查看数据库信息
查看数据库结构
显示数据表的结构(字段)
常用的数据类型
数据库管理操作
SQL语句概述
SQL分类
1.DDL:数据定义语言
1.1创建数据库和表
创建数据库
创建数据表
1.2删除数据库和表
删除数据表
删除数据库
2.DML数据操纵语言
2.1管理表中的数据
插入数据
更新数据
更新数据
3.DQL查询数据记录
查询数据
以列表方式竖向显示
只显示头两行
显示第3行后的2行
数据表高级操作
清空表
1.delete
2.truncate
drop、delete和truncate的对比
临时表
例:创建临时表
克隆表
1.根据需求,可以迁移表的数据、属性和约束
2.直接备份数据,不会导入主键和唯一键等约束
4.DCL
修改表名和表结构
扩展表结构(增加字段)
修改字段(列)名,添加唯一键
修改字段类型
删除字段
案例扩展
数据库管理
1.新建用户
查看用户信息
查看用户信息
重命名指定
修改当前用户密码
修改当前用户密码
删除用户
忘记root密码的解决办法
做免密登录
重启mysqld,是配置生效
mysql直接登录
使用sql语句修改密码
删除免密登录代码,并重启mysql
数据库用户授权★★★
授予权限
1.先创建用户,之后再给用户授权
2.创建用户时就授权
1.zhangsan 用户
登录 zhangsan 用户
查看所拥有的权限
只能查看,不能删除
2.monor用户
登录monor用户,查看拥有的权限
登录root用户查看
all privileges 包括的权限有哪些
撤销权限★★★
总结
数据库操作命令
常用数据类型
建库建表命令
操作表数据命令
修改表的结构 alter table
临时表和克隆表
用户管理命令
用户授权命令
数据库基本操作
查看数据库信息
show databases; #查看数据库
use mysql; #切换到mysql数据库
show tables; #查看当前数据库下的所有表;
show tables in mysql; #查看mysql数据库中的所有表
查看数据库结构
显示数据表的结构(字段)
describe 数据库名.表名;describe user; #查看users表
desc user; #也可简写为desc
例:
#进入mysql库
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
#查看user表结构
mysql> desc user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |#
Field 为字段名称;
Type 为数据类型;
Null 为是否为空;
Key 为主键(唯一);
Default 为默认值;
Extra 为扩展属性;例:标志符列(标识了种子,增量/步长)
#
常用的数据类型
int 整型;用于定义整数类型的数据
float 单精度浮点4字节32位;准确表示到小数点后六位
double 双精度浮点8字节64位;
char 固定长度的字符类型;用于定义字符类型数据;可以放字符串('英文'和'汉字')
varchar 可变长度的字符类型;
text 文本
image 图片
decimal(5,2) 表示5个有效长度数字,小数点后面显示2位;指定长度数组#char如果存入数据的实际长度比指定长度小,会自动补空格至指定长度;
如果存入的数据实际长度大于指定长度,低版本会被截取,高版本会报错
#主键是唯一的,但主键可以有多个字段构成
数据库管理操作
SQL语句概述
SQL(Structured Query Language)结构化查询语言
关系型数据库的标准语言
用于维护管理数据库包括数据查询、数据更新、访问控制、对象管理等功能
SQL分类
DDL:数据定义语言#用于创建数据库对象,如:库、表、索引
DML:数据操纵语言#用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据
DQL:数据查询语言#用于从数据表中查找符合条件的数据记录
DCL:数据控制语言#用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制不通数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,如COMMIT、ROLLBACK、GRANT、REVOKE)
1.DDL:数据定义语言
create、drop、alter
1.1创建数据库和表
创建数据库
create databases 数据库名;
例:
mysql> create database test;
Query OK, 1 row affected (0.00 sec)mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
6 rows in set (0.00 sec)
创建数据表
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型,...,PRIMARY KEY (主键名));
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键
#not null 表示不允许为空值
#default 表示默认值为空
#
例:
#进入数据库
mysql> use test;
Database changed
#查看数据表
mysql> show tables;
Empty set (0.00 sec)#创建表
mysql> create table users (id int(4) primary key not null,name char(10) not null,phone int(11),address char(40));
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| users |
+----------------+
1 row in set (0.00 sec)
1.2删除数据库和表
删除数据表
use 数据库名;
drop table 表名;#如不用USE进入库中,则需加上数据库名
drop table 库名.表名;
删除数据库
drop database 库名;
2.DML数据操纵语言
修改、更新数据表中的数据记录
insert 、update、delete
2.1管理表中的数据
插入数据
1.
insert into 表名 (字段1,字段2,...) values(值1,值2,...);2.
insert into 表名 values(值1,值2,...);#当加入的数据有密码字段时
insert into 表名 values(值1,值2,...,PASSWORD('123456'));
PASSWORD表示加密密码 123456 为密文
例
1.
#查看表的结构
mysql> desc users;
+---------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| id | int(4) | NO | PRI | NULL | |
| name | char(10) | NO | | NULL | |
| phone | int(11) | YES | | NULL | |
| address | char(40) | YES | | NULL | |
+---------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)#添加数据记录
mysql> insert into users (id,name,phone,address) values(1,'zhangsan','123','地球村');
Query OK, 1 row affected (0.00 sec)#查看表的内容
mysql> select * from users;
+----+----------+-------+-----------+
| id | name | phone | address |
+----+----------+-------+-----------+
| 1 | zhangsan | 123 | 地球村 |
+----+----------+-------+-----------+
1 row in set (0.00 sec)2.
mysql> insert into users values(2,'lisi','456','上海');
Query OK, 1 row affected (0.00 sec)mysql> select * from users;
+----+----------+-------+-----------+
| id | name | phone | address |
+----+----------+-------+-----------+
| 1 | zhangsan | 123 | 地球村 |
| 2 | lisi | 456 | 上海 |
+----+----------+-------+-----------+
2 rows in set (0.00 sec)
更新数据
update 表名 set phone='111' where id='2';#where 为条件判断,用来确定所要修改的行
例
mysql> update users set phone='111' where id='2';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql> select * from users;
+----+----------+-------+-----------+
| id | name | phone | address |
+----+----------+-------+-----------+
| 1 | zhangsan | 123 | 地球村 |
| 2 | lisi | 111 | 上海 |
+----+----------+-------+-----------+
2 rows in set (0.00 sec)mysql>
删除数据
delete from 表名 where 列名='值';
例
mysql> delete from users where name='lisi';
Query OK, 1 row affected (0.00 sec)mysql> select * from users;
+----+----------+-------+-----------+
| id | name | phone | address |
+----+----------+-------+-----------+
| 1 | zhangsan | 123 | 地球村 |
+----+----------+-------+-----------+
1 row in set (0.00 sec)mysql> delete from users;
Query OK, 2 rows affected (0.00 sec)mysql> select * from users;
Empty set (0.00 sec)
3.DQL查询数据记录
select
查询数据
select * from 表名;
select 字段1,字段2 from 表名;
select * from 表名 where 列名='值';
例
#查询所有数据
mysql> select * from users;#查询指定列数据
mysql> select id,name from users;#查询指定行数据
mysql> select id,name,phone,address from users where id=2;
模糊查找
select * from 表名 where 列名 like '%值%';
select * from class where scorc like '%.50';like 模糊查找
'%.50' 表示查询以 .50为结尾的数据
以列表方式竖向显示
mysql> select * from users\G;
mysql> select * from users\G;
*************************** 1. row ***************************id: 1name: zhangsanphone: 123
address: 地球村
*************************** 2. row ***************************id: 2name: lisiphone: 456
address: 上海
*************************** 3. row ***************************id: 3name: wangwuphone: 789
address: beijing
3 rows in set (0.00 sec)ERROR:
No query specified
只显示头两行
mysql> select * from users limit 2;
mysql> select * from users limit 2;
+----+----------+-------+-----------+
| id | name | phone | address |
+----+----------+-------+-----------+
| 1 | zhangsan | 123 | 地球村 |
| 2 | lisi | 456 | 上海 |
+----+----------+-------+-----------+
2 rows in set (0.00 sec)
显示第3行后的2行
mysql> select * from users;
DQL查询 * 代表所有字段;
也可以用单独的字段或多个字段查询,
where指定条件
limit来显示所需的行
mysql> select * from users;
+----+----------+-------+-----------+
| id | name | phone | address |
+----+----------+-------+-----------+
| 1 | zhangsan | 123 | 地球村 |
| 2 | lisi | 456 | 上海 |
| 3 | wangwu | 789 | beijing |
| 4 | xiaoliu | 111 | 地球村 |
| 5 | aqi | 222 | shanghai |
| 6 | laoba | 333 | zhengzhou |
+----+----------+-------+-----------+
6 rows in set (0.00 sec)mysql> select * from users limit 3,2;
+----+---------+-------+-----------+
| id | name | phone | address |
+----+---------+-------+-----------+
| 4 | xiaoliu | 111 | 地球村 |
| 5 | aqi | 222 | shanghai |
+----+---------+-------+-----------+
2 rows in set (0.00 sec)
数据表高级操作
清空表
删除表内的所有数据
1.delete
delete from 表名;#delete清空表后会返回被删除的记录条目;
#delete是一行一行来删除的,速度会比较慢;
#如果表中有自增长字段,delete删除记录后,新添加的记录会从原来最大的记录ID后面继续自增写入记录属于DML;可回滚(记录可恢复);表结构在,表内容要看where执行的情况;逐行删除,删除速度慢
2.truncate
truncate table 表名;#truncate清空表后,不会返回被删除的条目;
#truncate是将表结构按原样重新建立,因此速度上比delete快;
#清空数据后新添加的记录ID会从1开始重新记录属于DDL;不可回滚(无法恢复);不可带where;表内容和结构删除;删除速度快
drop、delete和truncate的对比
#删除类型
drop table table_name
1)属于DDL
2)不可回滚(无法恢复)
3)不可带where
4)表内容和结构删除
5)删除速度快truncate table table_name
1)属于DDL
2)不可回滚
3)不可带where
4)表内容删除
5)删除速度快delete from table_name
1)属于DML
2)可回滚(可恢复)
3)可带where
4)表结构在,表内容要看where执行的情况
5)册删除速度慢,需要逐行删除
删除速度:drop > truncate > delete
安全性:delete最好
不再需要一张表的时候,用drop
想删除部分数据行时候,用delete,并且带上where子
保留表而删除所有数据的时候用truncate
drop时尽量要与需求方和领导反复确认或做克隆表
临时表
临时建立的表,用于保存一些临时数据,不会长期存在(退出数据库就会被释放掉)
保存在内存中,不会被存储,退出mysql就会被释放掉;临时表无法创建外键
作用:用来试用表是否能用
int(4) zerofill 表示若数值不满4位数,则前面用“0”填充,例:0001
auto increment 表示此字段为自增长字段;每条记录在不指定时会自动递增1,默认从1开始;自增长字段必须为主键,数据不可重复;记录数据添加失败也会自增1;
unique key 表示此字段为唯一键约束,此字段数据不可重复;主键唯一,唯一键可以有多个
not null 表示此字段不可为空
例:创建临时表
create temporary table test (id int(4) zerofill primary key auto_increment not null,name varchar(16) not null,score decimal(5,2),phone int(11));
mysql> create temporary table test (id int(4) zerofill primary key auto_increment not null,name varchar(16) not null,score decimal(5,2),phone int(11));
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| users |
+----------------+
1 row in set (0.00 sec)#可以看到创建成功后,并不能看到test临时表#不过可以直接查看表的内容和结构
mysql> select * from test;
Empty set (0.00 sec)mysql> desc test;
+-------+--------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------------------+------+-----+---------+----------------+
| id | int(4) unsigned zerofill | NO | PRI | NULL | auto_increment |
| name | varchar(16) | NO | | NULL | |
| score | decimal(5,2) | YES | | NULL | |
| phone | int(11) | YES | | NULL | |
+-------+--------------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)#添加数据
mysql> insert into test values(1,'zhangsan',82.5,'111');
Query OK, 1 row affected (0.00 sec)mysql> insert into test (name,score,phone) values('lisi',85,'222');
Query OK, 1 row affected (0.00 sec)mysql> insert into test (name,score,phone) values('wangwu',91,'333');
Query OK, 1 row affected (0.00 sec)mysql> select * from test;
+------+----------+-------+-------+
| id | name | score | phone |
+------+----------+-------+-------+
| 0001 | zhangsan | 82.50 | 111 |
| 0002 | lisi | 85.00 | 222 |
| 0003 | wangwu | 91.00 | 333 |
+------+----------+-------+-------+
3 rows in set (0.00 sec)#退出MySQL重新进入,临时表被删除
mysql> desc test;
ERROR 1146 (42S02): Table 'test.test' doesn't exist
克隆表
1.根据需求,可以迁移表的数据、属性和约束
create table 新表名 like 旧表名;
insert into new2 select * from old1;流程:like克隆表,然后查询并导入数据
例
mysql> create table test1 like test;
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test1 |
| users |
+----------------+
2 rows in set (0.00 sec)mysql> insert into test1 select * from test;
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0mysql> select * from test1;
+------+----------+-------+-------+
| id | name | score | phone |
+------+----------+-------+-------+
| 0001 | zhangsan | 82.50 | 111 |
| 0002 | lisi | 85.00 | 222 |
| 0003 | wangwu | 91.00 | 333 |
+------+----------+-------+-------+
3 rows in set (0.00 sec)#查看克隆表的结构(主键约束也会被复制)
mysql> desc test1;
+-------+--------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------------------+------+-----+---------+----------------+
| id | int(4) unsigned zerofill | NO | PRI | NULL | auto_increment |
| name | varchar(16) | NO | | NULL | |
| score | decimal(5,2) | YES | | NULL | |
| phone | int(11) | YES | | NULL | |
+-------+--------------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
2.直接备份数据,不会导入主键和唯一键等约束
create table new2 (select * from old1);
例:
mysql> create table test2 (select * from test);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0mysql> desc test2;
+-------+--------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------------------+------+-----+---------+-------+
| id | int(4) unsigned zerofill | NO | | 0000 | |
| name | varchar(16) | NO | | NULL | |
| score | decimal(5,2) | YES | | NULL | |
| phone | int(11) | YES | | NULL | |
+-------+--------------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)#不会复制原表的主键和唯一键等约束
查看索引信息
mysql> show create table test2\G
*************************** 1. row ***************************Table: test2
Create Table: CREATE TABLE "test2" ("id" int(4) unsigned zerofill NOT NULL DEFAULT '0000',"name" varchar(16) NOT NULL,"score" decimal(5,2) DEFAULT NULL,"phone" int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)mysql>mysql> select * from test2;
+------+----------+-------+-------+
| id | name | score | phone |
+------+----------+-------+-------+
| 0001 | zhangsan | 82.50 | 111 |
| 0002 | lisi | 85.00 | 222 |
| 0003 | wangwu | 91.00 | 333 |
+------+----------+-------+-------+
3 rows in set (0.00 sec)
4.DCL
修改表名和表结构
alter table 旧表名 rename 新表名;
扩展表结构(增加字段)
alter table 表名 add 新字段 数据类型;
修改字段(列)名,添加唯一键
alter table 表名 change 旧列名 新列名 数据类型 唯一键;
#CHANGE 可修改字段名、数据类型、约束等所有项
#unique key
唯一键(特性:唯一,但可以为空,空值只允许出现一次)
#Primary key
主键(特性:唯一且非空,一个表只能有一个主键。)
修改字段类型
不建议修改,容易造成数据丢失
alter table 表名 modify column 字段名 数据类型;
删除字段
alter table 表名 drop 字段名;
案例扩展
if not exists #创建表时,判断表是否存在
mysql> use test;mysql> create table if not exists info (-> id int(4) zerofill primary key auto_increment,-> name varchar(10) not null,-> cardid int(18) not null unique key, -> hobby varchar(50));---------------------------------------------------------
#if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建
#int(4) zerofill:表示若数值不满4位数,则前面用"0"填充,例0001
#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;
自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且
添加失败也会自动递增一次
#unique key:表示此字段唯一键约束,此字段数据不可以重复:一张表中只能有一个主键,但是一张表中可以有多个唯一键
#not null:表示此字段不允许为NULL
---------------------------------------------------------
数据库管理
1.新建用户
create user '用户名'@'来源地址' identified by '密码';
select password('密码');
create user '用户名'@'来源地址' identified by password '密文';#
'用户名':指定要创建的用户名.
'来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符% ()
'密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;
若使用加密密码,需要先使用SELECT PASSWORD('密码');获取密文,再在语句中添PASSWORD '密文';
若省略“IDENTIFIED BY"部分,则用户的密码将为空(不建议使用)
查看用户信息
查看用户信息
select * from user; 查看用户表的所有信息,可以通过指定字段来方便查看use mysql;
select user,authentication_string,host from user;
重命名指定用户
rename user '旧名'@'来源地址' to '新名'@'来源地址';
rename user 'monor'@'localhost' to 'zhangsan'@'localhost';
修改指定用户密码
set password for '用户名'@'来源地址' = password('新密码');
set password for 'monor'@'localhost' = password('abc123');
修改当前用户密码
set password = password('新密码');
set password = password('abc123');
删除用户
drop user '用户名'@'本机地址';
drop user 'monor'@'localhost';
忘记root密码的解决办法
做免密登录
修改配置文件/etc/my.cnf,添加跳过密码登录
重启mysqld,是配置生效
mysql直接登录
使用sql语句修改密码
update mysql.user set authentication_string = password('123456') where user='root';
删除免密登录代码,并重启mysql
数据库用户授权★★★
授予权限
grant 提权
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];
grant 权限列表 on 数据库名.表名 to '用户名'@'来源地址' identified by '密码';
#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select, insert,
update”。使用"all"表示所有权限,可授权执行任何操作。
#数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符"*"。
例如,使用"kgc.*"表示授权操作的对象为school数据库中的所有表。
#'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如"%.xyw.com"、“192.168.80.%”等。
#IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。
在新建用户时,若省略"IDENTIFIED BY"部分,则用户的密码将为空。
1.先创建用户,之后再给用户授权
2.创建用户时就授权
1.zhangsan 用户
#允许用户zhangsan在本地查询test数据库中所有表的数据记录;
#但禁止查询其他数据库中的表的记录。
grant select on test.* to 'zhangsan'@'localhost' identified by '123456';
登录 zhangsan 用户
查看所拥有的权限
show grants for zhangsan@localhost;
#USAGE权限只能用于数据库登陆,不能执行任何操作;
#只在拥有test库中表的查询权限
只能查看,不能删除
2.monor用户
#允许用户monor使用192.168.67网段的终端远程连接mysql,并拥有所有权限。
连接navicat
在navicat中查看表
登录monor用户,查看拥有的权限
由于指定了192.168.67网段才能登陆,导致无法从本机登录
登录root用户查看
#USAGE权限只能用于数据库登陆,不能执行任何操作;
#拥有所有库和表的所有权限
all privileges 包括的权限有哪些
insert(插入数据)
select (查询数据)
update (更新表的数据)
delete(删除表中数据)
create (创建库,表)
drop(删除库,表)
refernces
index(建立索引)
alter(更改表属性)
create temp orary tableslock tables (锁表)
execute
create view (创建视图)
show view(显示视图)
create routine(创建存储过程)
alter routine(修改存储过程)
event(事件)
trigger on(创建触发器)
撤销权限★★★
REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址;revoke all on *.* from 'monor'@'%';
#USAGE权限只能用于数据库登陆,不能执行任何操作;
#USAGE权限不能被回收,即REVOKE不能删除用户。
总结
数据库操作命令
登录数据库 mysql -uroot -p123456
查看数据库信息 show database
切换到数据库中 use 数据库名
查看数据表 show tables
查看指定数据库中表的信息 show tables in mysql
显示数据表的结构 describe 表名
建库建表,命令
Field:字段名称
type:数据类型
Null :是否允许为空
Primary key :主键
Type:数据类型
Null :是否允许为空
unique key :唯一键
Default :默认值
Extra :扩展属性,例如:标志符列(标识了种子,增量/步长)
常用数据类型
int:整型 用于定义整数类型的数据
float:单精度浮点4字节32位 准确表示到小数点后六位
double:双精度浮点8字节64位
char:固定长度的字符类型 用于定义字符类型数据
varchar:可变长度的字符类型
text:文本
image:图片
decimal(5,2):5个有效长度数字,小数点后面有2位 指定长度数组#if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建
#int(4) zerofill:表示若数值不满4位数,则前面用"0"填充,例0001
#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;
#not null:表示此字段不允许为NULL
#default '地址不详':表示此字段设置默认值为地址不详,可与NOT NULL配合使用
建库建表命令
创建数据库 create database 库名;
创建数据表 create table 表名 (字段1 数据类型,字段2 数据类型,...);
删除数据表 drop table 表名;delete table 表名;
删除数据库 drop database 库名;
操作表数据命令
添加数据 insert into 表名 (字段1,字段2,...) values(值1,值2,...);insert into 表名 values(值1,值2,...);
更新数据 update 表名 set 字段1=字段值1 where 列名='';
删除数据 delete from 表名 where 列名='';查询数据 select 字段1,字段2,... from 表名 where 列名='';
以列表方式竖向显示 select name from zzz\G
只显示头2行 select * from 表名 limit 2;
显示第2行后的前3行 select * from 表名 limit 2,3;模糊查询 select * from 表名 where 列名 like '值%值';
修改表的结构 alter table
修改表名 alter table 旧表名 rename 新表名;
增加字段 alter table 表名 add 新字段 数据类型;
修改字段 alter table 表名 change 旧列名 新列名;
修改字段类型 alter table 表名 change 旧列名 新列名 数据类型;
删除字段 alter table 表名 drop 字段名;
设置默认值 alter table 表名 add 新字段 字段类型 default '默认值';
数据表高级操作
删除表中所有数据
delete from 表名;
truncate table 表名;删除表
drop table 表名;
临时表和克隆表
创建临时表 create temporary table 表名 (字段1 数据类型,字段2 数据类型,...);
创建克隆表 create table 新表名 like 旧表名;insert into 新表名 select * from 旧表名;
创建克隆表 create table 新表名 (select * from 旧表名);
用户管理命令
创建新用户 create user '用户名'@'来源地址' identified by '密码';
查询用户表 select user,authentication_string,host from user;
重命名用户 rename user '用户名'@'来源地址' to '新名'@'来源地址';
删除用户 drop user '用户名'@'来源地址';修改当前用户密码 set password = password('新密码');
修改其他用户密码 set password for '用户名'@'来源地址' = password('新密码');
用户授权命令
用户授权 grant 权限列表 on 库名.表名 to '用户名'@'来源地址' identified by '密码';
所有权限 all privileges
刷新权限 flush privileges;
查看权限 show grant for '用户名'@'来源地址';
撤回授权 revoke 权限列表 on 库名.表名 from '用户名'@'来源地址';
相关文章:

【MySQL】2.MySQL数据库的基本操作
目录 数据库基本操作 查看数据库信息 查看数据库结构 显示数据表的结构(字段) 常用的数据类型 数据库管理操作 SQL语句概述 SQL分类 1.DDL:数据定义语言 1.1创建数据库和表 创建数据库 创建数据表 1.2删除数据库和表 删除数据表…...

常见技术难点及方案
1. 分布式锁 1.1 难点 1.1.1 锁延期 同一时间内不允许多个客户端同时获得锁; 1.1.2 防止死锁 需要确保在任何故障场景下,都不会出现死锁; 1.2.3 可重入 特殊的锁机制,它允许同一个线程多次获取同一个锁而不会被阻塞。 1.2…...
c#关键字 static
static 修饰符可用于声明 static 类。 在类、接口和结构中,可以将 static 修饰符添加到字段、方法、属性、运算符、事件和构造函数。 static 修饰符不能用于索引器或终结器 尽管类的实例包含该类的所有实例字段的单独副本,但每个 static 字段只有一个副…...
redis 如何保证数据同步(数据变化时)
redis 如何保证数据同步(数据变化时) 思路 1.新增、删除和修改都先对数据库进行操作,这时数据库的数据将域缓存中数据不同。 2.数据库进行变动后,返回结果,根据返回的结果判断数据库操作是否成功。 3.如果数据库操…...

Ubuntu18.04桌面版设置静态IP地址
引用: Ubuntu配置静态IP_ubuntu配置静态ip地址-CSDN博客 正文 默认Unbuntu 18.04 Desktop桌面版使用 netplan 管理网卡网络地址。使用Unbuntu 18.04 桌面版配置,可以通过桌面上的设置图标配置网卡的静态IP地址。 点击桌面右上角下拉框,点击“设置”按…...

Aztec的客户端证明
1. 引言 隐私保护 zk-rollup 的证明生成与通用 zk-rollup 的证明生成有很大不同。原因是给定交易中存在特定数据(由私有函数处理),我们希望保持完全私有。在本文中,我们探讨了用于证明私有函数正确执行的客户端证明生成ÿ…...

面试官:小伙子知道synchronized的优化过程吗?我:嘚吧嘚吧嘚,面试官:出去!
写在开头 面试官:小伙子,多线程中锁用过吗? 我:那是自然! 面试官:那你知道synchronized的优化吗? 我:synchronized作为重锁,开销大,在早期不被推荐使用&…...
100天精通风控建模(原理+Python实现)——第23天:风控建模中的贝叶斯优化是什么?怎么实现?
在当今风险多变的环境下,风控建模已经成为金融机构、企业等组织的核心工作之一。在各大银行和公司都实际运用于业务,用于营销和风险控制等。本文以视频的形式阐述风控建模中的召回率是什么,怎么实现。并提供风控建模原理和Python实现文章清单。 之前已经阐述了100天精通…...

Http 超文本传输协议基本概念学习摘录
目录 HTTP协议 超文本传输协议 HyperText超文本 HTML超文本标记语言 HTTP协议原理 请求发送 服务器处理 响应发送 连接关闭或保持 HTTP协议版本 HTTP/0.9 HTTP/1.0 HTTP/1.1 HTTP/2 HTTP/3 HTTP请求方法 GET POST PUT DELETE HEAD OPTIONS HTTP请求头字…...

模拟-算法
文章目录 替换所有的问号提莫攻击Z字形变换外观数列数青蛙 替换所有的问号 算法思路: 从前往后遍历整个字符串,找到问号之后,就遍历 a ~ z 去尝试替换即可。 class Solution {public String modifyString(String s) {char[] ss s.toCharA…...

深入了解鸿鹄工程项目管理系统源码:功能清单与项目模块的深度解析
工程项目管理软件是现代项目管理中不可或缺的工具,它能够帮助项目团队更高效地组织和协调工作。本文将介绍一款功能强大的工程项目管理软件,该软件采用先进的Vue、Uniapp、Layui等技术框架,涵盖了项目策划决策、规划设计、施工建设到竣工交付…...

Unbuntu20.04 git push和pull相关问题
文章目录 Unbuntu20.04 git push和pull使用1.下载[Git工具包](https://git-scm.com/downloads)2.建立本地仓库3.将本地仓库与github远程仓库关联4.将本地仓库文件上传到github远程仓…...
hive SQL 移位、运算符、REGEXP正则等常用函数
orderflag & shiftleft(1,14) shiftleft(1,14) SQL中使用的运算符号详解_sql中各种符号-CSDN博客 Hive函数_hive shift-CSDN博客 (内建函数(类型排序)_云原生大数据计算服务 MaxCompute(MaxCompute)-阿里云帮助中心)...

33-Java服务定位器模式 (Service Locator Pattern)
Java服务定位器模式 实现范例 服务定位器模式(Service Locator Pattern)用于想使用 JNDI 查询定位各种服务的时候考虑到为某个服务查找 JNDI 的代价很高,服务定位器模式充分利用了缓存技术在首次请求某个服务时,服务定位器在 JNDI…...

前端小卡片:vue3路由是什么,有什么作用,该如何配置?
在 Vue 3 中,路由的处理使用了 Vue Router,它是官方提供的路由管理器。Vue Router 用于实现单页应用中的路由功能,通过将不同的 URL 映射到对应的组件,实现页面之间的切换和导航。 Vue Router 的作用包括: 实现页面之…...

Jackson 2.x 系列【2】生成器 JsonGenerator
有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 源码地址:https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 前言2. 案例演示2.1 创建 JsonFactory2.2 创建 JsonGenerator2.3 写入操作2.4 查…...

说说webpack中常见的Loader?解决了什么问题?
文章目录 一、是什么配置方式 二、特性三、常见的loadercss-loaderstyle-loaderless-loaderraw-loaderfile-loaderurl-loader 参考文献 一、是什么 loader 用于对模块的"源代码"进行转换,在 import 或"加载"模块时预处理文件 webpack做的事情…...
Django 铺垫
【一】基础知识点 【1】web框架的本质 Web框架本质上可以看成是一个功能强大的socket服务端用户的浏览器可以看成是拥有可视化界面的socket客服端两种通过网络请求实现数据交互 【2】浏览器发送请求 (1)HTTP协议 HTTP协议是超文本传输协议ÿ…...

浅谈C++的继承与多态(静态绑定、动态绑定和虚函数等)
今天我们来谈谈C的继承与多态😊😊😊,本篇的关键内容如下: 继承的本质及其原理派生类的构造和析构过程重载、隐藏和覆盖类的向下或向上转型静态绑定与动态绑定虚函数对类的影响虚析构函数 下面,我们将对这…...
【无人机综合考试题】
1.请选择出哪一个功能选项,在手动遥控飞行时,可以改变各通道的操作灵敏度? 行程比例在手动遥控飞行时,可以改变各通道的操作灵敏度 用于起降的遥控器中 THR、ELE 通道分别控制多旋翼无人机的什么运动? AIL(左、右移动)RUD(左、右水平旋转…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...