추천 무료 학습:mysql 비디오 튜토리얼
Article 디렉토리
준비: MySQL 데이터베이스 설치
Shell 스크립트 원클릭 배포 - MySQL 소스 코드 컴파일 및 설치
create database CLASS; use CLASS; create table TEST (id int not null,name char(20) not null,cardid varchar(18) not null unique key,primary key (id)); insert into TEST(id,name,cardid) values (1,'zhangsan','123123'); insert into TEST(id,name,cardid) values (2,'lisi','1231231'); insert into TEST(id,name,cardid) values (3,'wangwu','12312312'); select * from TEST;
1. 테이블 복제
데이터 테이블의 데이터 레코드를 새 테이블로 생성
방법 1
例:create table TEST01 like TEST; select * from TEST01; desc TEST01; insert into TEST01 select * from TEST; select * from TEST01;
방법 2
例:create table TEST02 (select * from TEST); select * from TEST02;
둘째, 테이블을 지우고 테이블 Data
Method 1
delete from TEST02;
#DELETE 테이블을 지운 후 반환된 결과에는 삭제된 레코드 항목이 포함됩니다. DELETE는 작업 시 레코드 데이터를 행별로 삭제합니다. 테이블의 자동 증가 필드는 DELETE FROM을 사용합니다. 모든 레코드를 삭제한 후 새로 추가된 레코드는 원래 가장 큰 레코드 ID의 레코드를 계속 씁니다
例:create table if not exists TEST03 (id int primary key auto_increment,name varchar(20) not null,cardid varchar(18) not null unique key); show tables; insert into TEST03 (name,cardid) values ('zhangsan','11111'); select * from TEST03; delete from TEST03; insert into TEST03 (name,cardid) values ('lisi','22222'); select * from TEST03;로그인 후 복사
방법 2
例:select * from TEST03; truncate table TEST03; insert into TEST03 (name,cardid) values ('wangwu','33333'); select * from TEST03;
# TRUNCATE 테이블을 지운 후 삭제된 항목을 반환하지 않습니다. TRUNCATE가 작동하면 테이블 구조를 그대로 다시 설정하므로 TRUNCATE TABLE을 사용하여 테이블의 데이터를 지운 후 TRUNCATE가 테이블을 더 빨리 지웁니다. , ID는 1부터 다시 기록됩니다.
3. 임시 테이블 생성
임시 테이블이 성공적으로 생성된 후에는 SHOW TABLES 명령을 사용하여 생성된 임시 테이블을 볼 수 없습니다. 임시 테이블은 연결이 종료된 후에 삭제됩니다. 연결을 종료하기 전에는 DROP TABLE 문을 사용하여 수동으로 임시 테이블을 직접 삭제하는 등 추가, 삭제, 수정, 쿼리 등의 작업을 수행할 수도 있습니다.
CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]); 例:create temporary table TEST04 (id int not null,name varchar(20) not null,cardid varchar(18) not null unique key,primary key (id)); show tables; insert into TEST04 values (1,'haha','12345'); select * from TEST04;
4. 외래 키 제약 조건 만들기
데이터 무결성 및 일관성 보장외래 키 정의: 동일한 속성 필드 x가 테이블 1에서는 기본 키이고, 테이블 2에서는 기본 키인 경우 기본 키가 아닌 필드 x를 테이블 2의 외래 키라고 합니다.
기본키 테이블과 외래키 테이블의 이해:1. 공통키워드가 기본키인 테이블이 기본키 테이블(부모테이블, 메인테이블)
2. 공통키워드가 외래키인 테이블 는 외래 키 테이블입니다(테이블, 모양)
참고: 외래 키와 연결된 마스터 테이블의 필드는 기본 키로 설정되어야 하며, 슬레이브 테이블은 마스터 및 테이블의 필드가 될 수 없습니다. 슬레이브 테이블의 데이터 유형, 문자 길이 및 제약 조건은 동일합니다. 여기에 설명되지 않은 외래 키 이름을 삭제하세요
例:create table TEST04 (hobid int(4),hobname varchar(50)); create table TEST05 (id int(4) primary key auto_increment,name varchar(50),age int(4),hobid int(4)); alter table TEST04 add constraint PK_hobid primary key(hobid); alter table TEST05 add constraint FK_hobid foreign key(hobid) references TEST04(hobid);
MySQL의 6가지 공통 제약 조건
主键约束 | primary key |
---|---|
外键约束 | foreign key |
非空约束 | not null |
唯一约束 | unique [key |
默认值约束 | default |
自增约束 | auto_increment |
五、数据库用户管理
1、新建用户
CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
‘用户名’:指定将创建的用户名
‘来源地址’:指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符%
‘密码’:若使用明文密码,直接输入’密码’,插入到数据库时由Mysql自动加密;
------若使用加密密码,需要先使用SELECT PASSWORD(‘密码’); 获取密文,再在语句中添加 PASSWORD ‘密文’;
------若省略“IDENTIFIED BY”部分,则用户的密码将为空(不建议使用)
例:create user 'zhangsan'@'localhost' identified by '123123'; select password('123123'); create user 'lisi'@'localhost' identified by password '*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1';
2、查看用户信息
创建后的用户保存在 mysql 数据库的 user 表里
USE mysql; SELECT User,authentication_string,Host from user;
3、重命名用户
RENAME USER 'zhangsan'@'localhost' TO 'wangwu'@'localhost'; SELECT User,authentication_string,Host from user;
4、删除用户
DROP USER 'lisi'@'localhost'; SELECT User,authentication_string,Host from user;
5、修改当前登录用户密码
SET PASSWORD = PASSWORD('abc123'); quit mysql -u root -p
6、修改其他用户密码
SET PASSWORD FOR 'wangwu'@'localhost' = PASSWORD('abc123'); use mysql; SELECT User,authentication_string,Host from user;
7、忘记 root 密码的解决办法
1、修改 /etc/my.cnf 配置文件,不使用密码直接登录到 mysql
vim /etc/my.cnf [mysqld] skip-grant-tables #添加,使登录mysql不使用授权表 systemctl restart mysqld mysql #直接登录
2、使用 update 修改 root 密码,刷新数据库
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('112233') where user='root'; FLUSH PRIVILEGES; quit 再把 /etc/my.cnf 配置文件里的 skip-grant-tables 删除,并重启 mysql 服务。 mysql -u root -p 112233
六、数据库用户授权
1、授予权限
GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户;当指定的用户名存在时,GRANT 语句用于修改用户信息。 GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];
#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可授权执行任何操作。 #数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符“*”。*例如,使用“kgc.*”表示授权操作的对象为 kgc数据库中的所有表。 #'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP 地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.lic.com”、“192.168.184.%”等。 #IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略“IDENTIFIED BY”部分, 则用户的密码将为空。
#允许用户wangwu在本地查询 CLASS 数据库中所有表的数据记录,但禁止查询其他数据库中的表的记录。
例: GRANT select ON CLASS.* TO 'wangwu'@'localhost' IDENTIFIED BY '123456'; quit; mysql -u wangwu -p 123456 show databases; use information_schema; show tables; select * from INNODB_SYS_TABLESTATS;
#允许用户wangwu在本地远程连接 mysql ,并拥有所有权限。
quit; mysql -u root -p112233 GRANT ALL PRIVILEGES ON *.* TO 'wangwu'@'localhost' IDENTIFIED BY '123456'; flush privileges; quit mysql -u wangwu -p123456 create database SCHOOL;
2、查看权限
SHOW GRANTS FOR 用户名@来源地址; 例: SHOW GRANTS FOR 'wangwu'@'localhost';
3、撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址; 例:quit; mysql -u root -p112233 SHOW GRANTS FOR 'wangwu'@'localhost'; REVOKE SELECT ON "CLASS".* FROM 'wangwu'@'localhost'; SHOW GRANTS FOR 'wangwu'@'localhost';
#USAGE权限只能用于数据库登陆,不能执行任何操作;USAGE权限不能被回收,即 REVOKE 不能删除用户。
flush privileges;
更多相关免费学习推荐:mysql教程(视频)
위 내용은 MySQL 데이터베이스 고급 작업 살펴보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!