一、MySQL程序操作
操作 | 命令 |
查看数据库版本 | |
查看连接的端口号 | 登入mysql后输入 |
mysql目前状态 | sudo service mysql status |
关闭mysql服务 | sudo service mysql stop |
开启mysql服务 | sudo service mysql start |
卸载mysql | sudo apt-get remove mysql-server |
修改root账户密码(mysql8之前) | set password for root@localhost = password(‘新密码’); |
修改root账户密码(mysql8) | ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘新密码’; |
win系统mysql配置
MySQL服务启动
使用管理员打开cmd
net start mysql
: 启动mysql服务
net stop mysql
: 关闭mysql服务
mysql -h 主机名 -P 端口名 -u用户名 -p密码
: 登录
mysql -hip -uroot -p
: 访问远程mysql
mysql --host=ip --user=root --password=密码
: 访问远程mysql
退出 : exit 或 quit
通用语法
- 分号结尾
- SQL语句不区分大小写, 关键字建议使用大写
- 三种注释方式
- 单行注释 : – 注释内容 或者 # 注释内容
- 多行注释 : /* 注释 */
二、数据库命令行操作
操作 | 命令 |
登录数据库 | mysql -u root -p |
创建数据库 | create database [if not exists] |
删除数据库 | drop database [if exists] |
修改数据库的字符集 | alter database |
查询数据库 | show databases; |
查询当前使用的数据库 | select database(); |
选择数据库 | use |
查看数据表 | show tables; |
创建表 | CREATE TABLE 表名 (column_name column_type); |
显示数据表结构 | describe 表名; 或者 desc 表名; |
删表 | drop table if exists 表名; |
查询数据库结构 | |
查询表结构 | |
复制表的结构 | CREATE TABLE 表名 LIKE 要复制的表名; |
复制表的结构+数据 | CREATE TABLE 表名 SELECT * FROM 要复制的表名; |
只复制部分数据 | CREATE TABLE 表名 SELECT 字段1, 字段2 FROM 要复制的表名 WHERE 筛选条件; |
创建表实例
- 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
- AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
- PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
- ENGINE 设置存储引擎,CHARSET 设置编码。
- 复制完整表结构
create table 表名 like 被复制的表名
- 复制表的结构+数据
create table 表名 select 查询列表 from 旧表 [where 筛选条件];
修改表实例
- 修改表名
alter table 表名 rename to 新表名;
- 修改表的字符集
alter table 表名 character set 字符集名称;
- 添加一列
alter table 表名 add 列名 数据类型 [first/after 字段名];
- 修改列名称
alter table 表名 change 列名 新列名 新数据类型;
- 修改列类型
alter table 表名 modify 列名 新数据类型;
- 删除列
alter table 表名 drop 列名;
字段数据类型
数值型
- 整形
tinyint 1字节、smallint 2、mediumint 3、int/integer 4、bigint 8
特点:
1. 都可以设置无符号和有符号, 默认有符号, 通过unsigned设置无符号
2. 如果超出了范围, 会报out of range异常, 插入临界值
3. 长度可以不指定, 默认会有一个长度
长度代表显示的最大宽度, 如果不够则左边用0填充, 但需要搭配zerofill, 并且默认变为无符号整形 - 浮点数
定点数: decimal(M,D)
浮点数:
float(M,D) 4
double(M, D) 8
特点:
1. M代表整数部位+小数部位的个数, D代表小数部位
2. 如果超出范围, 则报 out of range异常, 并且插入临界值
3. M和D都可以省略, 但对于定点数, M默认为10, D默认为0
4. 如果精度要求较高, 则优先考虑使用定点数
字符型
char varchar binary varbinary enum set text blob
char: 固定长度的字符, 写法为char(M), 最大长度不能超过M, 其中M可以省略, 默认为1
varchar: 可变长度的字符, 写法为varchar(M), 最大长度不能超过M, 其中不可以省略
日期型
year 年
date 日期
time 时间
datetime 日期+时间
timestamp 日期+时间 会受时区,语法模式,版本的影响, 更能反映当前时区的真实时间
三、CRUD命令行操作
crud是指在做计算处理时的增加(Create)、读取(Read)、更新(Update)和删除(Delete)几个单词的首字母简写.
详细的MySQL查询语句以及语法总结请看 : MySQL 查询语句
2.1 增加(Create)操作
insert into
表名
(字段1, 字段2, 字段3 …) values (值1, 值2, 值3, …);其中表名后面如果不写, 则默认为所有表名
- 可以添加多条数据
insert into 表名
value (值1, 值2, …), (值1, 值2), …insert into
表名
set 列名=值, 列名=值, …;
向stu表中添加两条数据
2.2 读取(READ)操作
select 字段1, 字段2 from 表名 where 限定条件;
查询stu表中所有数据
给定条件查询
测试BINARY关键字(查询条件区分大小写)
2.3 更新(Update)操作
update
表名
set 字段1=值, 字段2=值, … where 限定条件;
如果不加任何条件, 则会将表中所有记录全部修改.
限定条件下批量修改(REPLACE)
mysql表中有一些字段是显示日期的。因为各种需要,需要将它时间往后调整1年。
mysql 日期增加一年的更新语句更新的语句如下:
如果要增加1天,则后面的 1 YEAR 变成 1 DAY,1月则是 1 MONTH
注意如果是多年或者多月或者多天,如3年
后面是写 3 YEAR ,并不需要复数。所以不要写成 3 YEARS
————————————————
2.4 删除(Delete)操作
delete from
表名
where 限定条件
;
TRUNCATE TABLE 表名; – 先删除表, 然后在创建一张一样的表(推荐)
两者的区别:
- delete 可以加where条件, truncate 不能加.
- truncate 删除, 效率高一点.
- 如果要删除的表中有自增长列,
如果delete删除后, 在插入数据, 自增长列的值从断点开始,
而truncate删除后, 在插入数据, 自增长列的值从1开始. - truncate 删除没有返回值, delete 删除有返回值.
- truncate 删除不能回滚, delete 删除可以回滚.
sql92语法:
delete 表1的别名, 表2的别名
from 表1 别名, 表2, 别名
where 连接条件
and 筛选条件;
sql99语法:
delete 表1的别名, 表2的别名
from 表1 别名
inner|left|right join 表2 别名 on 连接条件
where 筛选条件;
[参考文章]
- 菜鸟 MySQL教程
- ubuntu安装Mysql
- linux mysql 查看默认端口号和修改端口号
- 如何查看MySQL的版本?