mysql8.0学习笔记

mysql8.0学习笔记

1.安装过程:略。

MySQL有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更细致的划分了许多子类型:

数字类型
整数: tinyint、smallint、mediumint、int、bigint
浮点数: float、double、real、decimal
日期和时间: date、time、datetime、timestamp、year
字符串类型
字符串: char、varchar
文本: tinytext、text、mediumtext、longtext
二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob
复制代码

2.关于mysql server (在linux系统下面(ubuntu18.04)).

service mysql start; (开启服务) 需要管理员密码
service mysql stop; (关闭服务)
service mysql status; (查看mysql服务运行状态)
复制代码

3.登录mysql

mysql -h ip地址 -u 用户 -p密码;
例如:一个需要在本机登录的用户名是suhang 密码是123456 登录命令应该是这样的 mysql -h localhost -u suhang -p123456
其中localhost代表的是本机的ip地址(这是普通的用户的登录方式);对于root用户 只需要讲用户名换为root即可.
复制代码

4.创建用户

create user 用户名 identified by 密码;
例如:创建一个用户名是suhang密码是123456的用户: create user 'suhang' identified by '123456';
复制代码

5.为某一个数据库添加用户,并且给予用户相应的权限具体的权限如下:

读取 select
更新 update
删除 delete
创建 create
删除 表,库 drop
若是挨个添加麻烦 可以使用 all privileges 附给所有权限
赋予权限的命令如下 grant 权限 on 数据库名/数据表名.* to '用户名'@'%'; 百分号代表的是登录该用户的主机地址可以是任意的。
一个简单的例子:为zhangsan数据库添加一个zhang的管理员,赋予zhang的权限有读取select和删除drop的操作,要求该用户只可以通过本机登陆:
grant select drop zhangsan.* to 'zhang'@'localhost';
要是要求该用户可以从任意的ip地址登录,将%改为localhost.
相应的:有增加权限,就会有移除权限,下面介绍移除权限的命令:
revoke 权限 on 数据库名/表名.* from '用户名'@'%';需要注意的是增加权限和删除权限之后,都需要执行权限更新的操作执行flush privileges;
复制代码

6.查看用户对于数据库的操作权限;

selct user,db,drop_priv,select_priv,delete_priv,update_priv,create_priv from mysql.db where user='用户名';
上面的命令会打印出查找的用户对于自己的数据库的执行权限(仅有命令中的权限)
复制代码

7.显示有多少用户(以管理员的身份登录)

select user from mysql.user;
复制代码

8.为了防止用户登录mysqlde的方法:(1).锁定用户: alter user '用户名'@'ip地址' account lock;

					      (2).解锁用户: alter user '用户名'@'ip地址' account unlock;
复制代码

9.无法更改用户名只能创建新用户,将原来的用户权限赋值给新用户;具体操作如下:

create user '用户'@'ip' identified by 'new_password';
grant '旧用户'@'ip' to '新用户'@'ip';
复制代码

10.查询当前所有的数据库:show databases;

11.创建数据库: create database 数据库名; 删除当前的数据库: drop database 数据库名;

12.使用当前的数据库:use 数据库名;

13.数据库引擎 show engines;查询结果中,engine参数指存储引擎名称;Support参数代表mysql是否支持该引擎;transaction参数表示是否支持事物处理;XA参数代表的是否分布式交易处理的XA

规范;Savepoints参数表示是否支持保存点,以方便事物的回滚操作。
复制代码

14.创建表:在执行use 数据库名;命令之后即可执行创建表的操作;

create table 表名 {
	属性名 数据类型 {完整约束条件}
	属性名 数据类型 {完整约束条件}
	....
	属性名 数据类型 {完整约束条件}
};
下面是个简单的例子:
mysql> use example;
Database changed
mysql> create table student(
	-> id int,
	-> name varchar(20)
	-> );
Query OK, 0 rows affected (0.09 sec)
上面创建表的时候涉及到一个完整性约束条件,下面就列出一个完整性约束条件表:
约束条件           说明
PRIMARY KEY       标识该属性为该表的主键,可以唯一的标识对应的元组
FOREIGN KEY       标识该属性为该表的外键,是与之联系某表的主键
NOT NULL          标识该属性不能为空
UNIQUE            标识该属性的值是唯一的
AUTO_INCREMENT    标识该属性的值是自动增加的,这是Mysql的SQL语言的特色
DEFAULT           为该属性设置默认值
下面讲解一下完整性约束条件的应用:
(1)单字段主键格式:属性名 数据类型 PRIMARY KEY
示例:
mysql> create table student1(
	-> id int PRIMARY KEY,
    -> name varchar(20),
    -> );
Query OK, 0 rows affected (0.06 sec)
(2)多字段主键格式:属性名 数据类型 PRIMARY EKY(属性名1,属性名2,....,属性名n)
示例:
mysql> create table student2(
    -> id int,
	-> stu_id int,
	-> name varchar(20),
	->PRIMARY KEY(id,stu_id)
	->);
Query OK,0 rows affected(0.00 sec)
(3)设置表的外键
格式:CONSTRAINT 外键别名 FOREIGN KEY(属性1,属性2,...,属性n)REFERENCES 表名(属性1',属性2',...,属性n')
示例:
mysql> create table teacher(
	-> id int PRIMARY KEY,
	-> stu_id int,
	-> name varchar(20),
	-> CONSTRAINT STUID FOREIGN KEY(stu_id)REFERENCES student1(id)
	->);
Query OK, 0 rows affected(0.00 sec)
(4)设置表的非空约束
格式:属性名 数据类型 NOT NULL
(5)设置表的唯一约束
就是这个属性的值不能重复的
格式:属性名 数据类型 UNIQUE
(6)设置标的属性的值自动增加
AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT,SMALLINT,INT和BIGINT),在默认情况下,该字段的值是从1开始自增
格式:属性名 数据类型 AUTO_INCREMENT
(7)设置标的属性的默认值
格式:属性名 数据类型 DEFAULT 默认值
下面对于4-7进行综合性讲解
mysql> create table student3(
	->id int PRIMARY KEY AUTO_INCREMENT,
	->name varchar(20) NOT NULL,
	->sex varchar(10) DEFAULT 'male'
	->);
Query OK, 0 rows affected (0.01 sec)
复制代码

15.查看表的结构

查看表的基本结构语句DESCRIBE
格式: DESCRIBE 表名;
通过查看表的结构,就很明确的对表进行解读,而且可以查看一下自己创建的表有没有错误,这个SQL语句必须要会的啊
复制代码

16.查看表详细结构语句 SHOW CREATE TABLE 通过这个语句可以查看表的详细定义,除了字段名,字段的数据类型,约束条件外,还可以查看表的默认引擎和字符编码

格式 SHOW CREATE TABLE 表明;
复制代码

17.修改表:

(1).修改表名
表明可以在一个数据库中唯一的确定一个表。
格式:alter table 旧表名 raname 新表名;
示例:
mysql> alter table student raname student4;
Query OK, 0 rows affected (0.11 sec)
mysql> describe student;
ERROR 1146 (42S02): Table 'example.student'
doesn't exist
由上面的可以看出,改名后的表已经不存在了.
复制代码

18.修改字段的数据类型

格式:alter table 表名 MODIFY 属性名 数据类型;
复制代码

19.修改字段名

格式:alter table 表名 CHANGE 旧属性名 新属性名 新数据类型;
复制代码

20.增加字段

格式:alter table 表名 add 属性1 数据类型[完整性约束条件] [first|after 属性名2]
其中,’属性名1‘参数指需要增加的字段的名称;'FIRST'参数是可选参数,其作用是将新增字段设置为表的第一个字段;'alter'参数也是可选参数,其作用是将新增字段添加到’属性名2‘
后面;’属性名2‘当然就是指表中已经有的字段.
示例:在student1表中添加字段teacher_name ,数据类型为varchar(20),完整性约束条件是 NOT NULL,将此字段添加到id字段的后面;
alter table student1 add teacher_name varchar(20) NOT NULL after id;
复制代码

21.删除字段

格式: alter table 表名 drop 属性名;
示例:在student1中删除刚才添加的属性名teacher_name
alter table student1 drop teacher_name;
复制代码

22.更改表的存储引擎

格式:alter table 表名 engine=存储引擎名;
复制代码

23.删除表的外键约束

格式:alter table 表名 drop foreign key 外键别名;
复制代码

24.删除没有被关联的普通表: drop table 表名;

删除被其他表关联的父表: 方法1:先删除子表,再删除父表 方法2:删除父表的外键约束(上面有介绍),在删除该表
复制代码

25.将数据插到数据库表中, 使用的一般形式如下:

insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);
有时我们只需要插入部分数据, 或者不按照列的顺序进行插入, 可以使用这样的形式进行插入:
insert into students (name, sex, age) values(“孙丽华”, “女”, 21);
复制代码

26.查询表中的内容

select 属性名 from 表名称 [查询条件];
按照特定条件进行查询
where 关键词用于指定查询条件, 用法形式为: select 列名称 from 表名称 where 条件;
以查询所有性别为女的信息为例, 输入查询语句: select * from students where sex=”女”;
更加高级的操作:
查询年龄在21岁以上的所有人信息: select * from students where age > 21;
查询名字中带有 “王” 字的所有人信息: select * from students where name like “%王%”;
查询id小于5且年龄大于20的所有人信息: select * from students where id<5 and age>20;
复制代码

27.更新表中的数据:

update 表名称 set 列名称=新值 where 更新条件;
示例:将id为5的手机号改为默认的”-“: update students set tel=default where id=5;
将手机号为 13288097888 的姓名改为 “张伟鹏”, 年龄改为 19: update students set name=”张伟鹏”, age=19 where tel=”13288097888″;
复制代码

28.删除表中的数据

delete from 表名称 where 删除条件;
删除id为2的行: delete from students where id=2;
删除所有年龄小于21岁的数据: delete from students where age<20;
删除表中的所有数据: delete from students;
复制代码

备注:上述文件的列名称就是字段

你可能感兴趣的:(数据库,操作系统)