设为首页 收藏本站
查看: 693|回复: 0

[经验分享] Mysql 基础语法

[复制链接]

尚未签到

发表于 2018-10-8 08:02:59 | 显示全部楼层 |阅读模式
数据库基本语法:  
DDL:Data Defination Lanuage: 数据定义语言
  
    CREATE, ALTER, DROP
  
DML:Data Manapulate Language: 数据操作语言
  
    INSERT, REPLACE, UPDATE, DELETE
  
DCL:Data Control Language: 数据控制语言
  
    GRANT, REVOKE
  
常用命令:
  
mysql命令不区分大小写 这些是基本常识
  
DDL
  
    CREATE
  
    ALTER
  
    DROP
  
DML 操纵语言
  
    INSERT
  
    UPDATE
  
    DELETE
  
DCL 控制语言
  
    GRANT
  
    REVOKE
  
第一篇 DDL 库和表 create alter drop
  
mysql> create database mydb;
  
Query OK, 1 row affected (0.01 sec)
  
mysql> use mydb;
  
Database changed
  
mysql> show tables;
  
Empty set (0.00 sec)
  
mysql> create table students (id char(20),name char(20),age char(10),score char(10)); 建表并添加4个字段和字段的类型
  
Query OK, 0 rows affected (0.10 sec)
  
mysql> show tables;
  
+----------------+
  
| Tables_in_mydb |
  
+----------------+
  
| students       |
  
+----------------+
  
1 row in set (0.00 sec)
  
mysql> create table teachers as select * from students; 建立教师表,字段同学生表
  
Query OK, 0 rows affected (0.02 sec)
  
Records: 0  Duplicates: 0  Warnings: 0
  
mysql> show tables;
  
+----------------+
  
| Tables_in_mydb |
  
+----------------+
  
| students       |
  
| teachers       |
  
+----------------+
  
2 rows in set (0.00 sec)
  
mysql> desc students;
  
mysql> desc teachers;
  
+-------+----------+------+-----+---------+-------+
  
| Field | Type     | Null | Key | Default | Extra |
  
+-------+----------+------+-----+---------+-------+
  
| id    | char(20) | YES  |     | NULL    |       |
  
| name  | char(20) | YES  |     | NULL    |       |
  
| age   | char(10) | YES  |     | NULL    |       |
  
| score | char(10) | YES  |     | NULL    |       |
  
+-------+----------+------+-----+---------+-------+
  
mysql> alter table teachers add subject varchar(100); 添加字段
  
Query OK, 0 rows affected (0.06 sec)
  
Records: 0  Duplicates: 0  Warnings: 0
  
mysql> desc teachers;
  
+---------+--------------+------+-----+---------+-------+
  
| Field   | Type         | Null | Key | Default | Extra |
  
+---------+--------------+------+-----+---------+-------+
  
| id      | char(20)     | YES  |     | NULL    |       |
  
| name    | char(20)     | YES  |     | NULL    |       |
  
| age     | char(10)     | YES  |     | NULL    |       |
  
| score   | char(10)     | YES  |     | NULL    |       |
  
| subject | varchar(100) | YES  |     | NULL    |       |
  
+---------+--------------+------+-----+---------+-------+
  
mysql> alter table teachers drop score; 删除字段
  
Query OK, 0 rows affected (0.05 sec)
  
Records: 0  Duplicates: 0  Warnings: 0
  
mysql> desc teachers;
  
+---------+--------------+------+-----+---------+-------+
  
| Field   | Type         | Null | Key | Default | Extra |
  
+---------+--------------+------+-----+---------+-------+
  
| id      | char(20)     | YES  |     | NULL    |       |
  
| name    | char(20)     | YES  |     | NULL    |       |
  
| age     | char(10)     | YES  |     | NULL    |       |
  
| subject | varchar(100) | YES  |     | NULL    |       |
  
+---------+--------------+------+-----+---------+-------+
  
mysql> alter table teachers change id teacherid char(30); 修改字段名,用change
  
Query OK, 0 rows affected (0.06 sec)
  
Records: 0  Duplicates: 0  Warnings: 0
  
mysql> desc teachers;
  
+-----------+--------------+------+-----+---------+-------+
  
| Field     | Type         | Null | Key | Default | Extra |
  
+-----------+--------------+------+-----+---------+-------+
  
| teacherid | char(30)     | YES  |     | NULL    |       |
  
| name      | char(20)     | YES  |     | NULL    |       |
  
| age       | char(10)     | YES  |     | NULL    |       |
  
| subject   | varchar(100) | YES  |     | NULL    |       |
  
+-----------+--------------+------+-----+---------+-------+
  
mysql> alter table teachers modify teacherid varchar(5); 修改字段属性,用modify
  
Query OK, 0 rows affected (0.02 sec)
  
Records: 0  Duplicates: 0  Warnings: 0
  
mysql> desc teachers;
  
+-----------+--------------+------+-----+---------+-------+
  
| Field     | Type         | Null | Key | Default | Extra |
  
+-----------+--------------+------+-----+---------+-------+
  
| teacherid | varchar(5)   | YES  |     | NULL    |       |
  
| name      | char(20)     | YES  |     | NULL    |       |
  
| age       | char(10)     | YES  |     | NULL    |       |
  
| subject   | varchar(100) | YES  |     | NULL    |       |
  
+-----------+--------------+------+-----+---------+-------+
  
mysql> drop table teachers; 删除表,drop table table_name
  
Query OK, 0 rows affected (0.00 sec)
  
总结1:
  
    查看库中的表:SHOW TABLES FROM db_name;
  
    查看表的结构:DESC tb_name;
  
    删除表:DROP TABLE tb_name;
  
修改表:
  
    ALTER TABLE tb_name
  
        MODIFY 改字段属性
  
        CHANGE 改字段名称
  
        ADD 添加字段
  
        DROP 删除字段
  
help create table获取帮助 help alter table
  
第二篇 DML 数据修改 insert update delete ; select
  
mysql> insert into students (id,name,age,score) value('1','wxtan','18','99'),('2','yull','17','80');  增加表内数据,insert into
  
Query OK, 2 rows affected (0.00 sec)
  
Records: 2  Duplicates: 0  Warnings: 0
  
mysql> select * from students;
  
+------+-------+------+-------+
  
| id   | name  | age  | score |
  
+------+-------+------+-------+
  
| 1    | wxtan | 18   | 99    |
  
| 2    | yull  | 17   | 80    |
  
+------+-------+------+-------+
  
mysql> insert into students value('3','AA','30','60');  (如果全部字段都添加可以不用写)
  
Query OK, 1 row affected (0.00 sec)
  
mysql> select * from students;
  
+------+-------+------+-------+
  
| id   | name  | age  | score |
  
+------+-------+------+-------+
  
| 1    | wxtan | 18   | 99    |
  
| 2    | yull  | 17   | 80    |
  
| 3    | AA    | 30   | 60    |
  
+------+-------+------+-------+
  
mysql> update students set age=14 where id=1; 修改表内数据,update table_name
  
Query OK, 1 row affected (0.01 sec)
  
Rows matched: 1  Changed: 1  Warnings: 0
  
mysql> select * from students;
  
+------+-------+------+-------+
  
| id   | name  | age  | score |
  
+------+-------+------+-------+
  
| 1    | wxtan | 14   | 99    |
  
| 2    | yull  | 17   | 80    |
  
| 3    | AA    | 30   | 60    |
  
+------+-------+------+-------+
  
3 rows in set (0.00 sec)
  
mysql> update students set age='28' where name='yull'; 修改表内数据,update table_name
  
Query OK, 1 row affected (0.00 sec)
  
Rows matched: 1  Changed: 1  Warnings: 0
  
mysql> select * from students;
  
+------+-------+------+-------+
  
| id   | name  | age  | score |
  
+------+-------+------+-------+
  
| 1    | wxtan | 14   | 99    |
  
| 2    | yull  | 28   | 80    |
  
| 3    | AA    | 30   | 60    |
  
+------+-------+------+-------+
  
3 rows in set (0.00 sec)
  
mysql> select * from students;
  
+------+-------+------+-------+
  
| id   | name  | age  | score |
  
+------+-------+------+-------+
  
| 1    | wxtan | 14   | 99    |
  
| 2    | yull  | 28   | 80    |
  
| 5    | bb    | 44   | 55    |
  
| 6    | cc    | 44   | 60    |
  
+------+-------+------+-------+
  
4 rows in set (0.00 sec)
  
mysql> delete from students where age='44'; 删除表内数据,delete from
  
Query OK, 2 rows affected (0.00 sec)
  
mysql> select * from students;
  
+------+-------+------+-------+
  
| id   | name  | age  | score |
  
+------+-------+------+-------+
  
| 1    | wxtan | 14   | 99    |
  
| 2    | yull  | 28   | 80    |
  
+------+-------+------+-------+
  
mysql> delete from students where age='14' or score='80'; 可以用or and等条件表达式
  
Query OK, 2 rows affected (0.00 sec)
  
mysql> select * from students;
  
Empty set (0.00 sec)
  
mysql> select * from students; 数据查询,select from
  
+------+--------+------+-------+
  
| id   | name   | age  | score |
  
+------+--------+------+-------+
  
| 1    | apple  | 20   | 88    |
  
| 3    | xigua  | 10   | 50    |
  
| 2    | banana | 30   | 68    |
  
+------+--------+------+-------+
  
3 rows in set (0.00 sec)
  
mysql> select id,name from students;
  
+------+--------+
  
| id   | name   |
  
+------+--------+
  
| 1    | apple  |
  
| 3    | xigua  |
  
| 2    | banana |
  
+------+--------+
  
3 rows in set (0.00 sec)
  
mysql> select id,name from students where age=20;
  
+------+-------+
  
| id   | name  |
  
+------+-------+
  
| 1    | apple |
  
+------+-------+
  
1 row in set (0.00 sec)
  
第三篇 DCL 权限 grant revoke;show grants for
  
mysql> grant select,insert,update on mydb.students to 'wxtan2'@'192.168.8.%' identified by '123'; 给权限到某表,授予某账户(账户不存在则创建)
  
mysql> flush privileges; 刷新权限
  
[root@test mysql]# mysql -uwxtan2 -p123 -h192.168.8.104 从192.168.8.%进入数据库
  
Welcome to the MariaDB monitor.
  
MySQL [mydb]> select * from students;
  
+------+--------+------+-------+
  
| id   | name   | age  | score |
  
+------+--------+------+-------+
  
| 1    | apple  | 20   | 88    |
  
| 3    | xigua  | 10   | 50    |
  
| 2    | banana | 30   | 68    |
  
+------+--------+------+-------+
  
3 rows in set (0.00 sec)
  
MySQL [mydb]> insert into students value('4','guapi','40','50'); 有insert权限
  
Query OK, 1 row affected (0.02 sec)
  
MySQL [mydb]> update students set name='apple222' where id='1'; 有update权限
  
Query OK, 1 row affected (0.00 sec)
  
Rows matched: 1  Changed: 1  Warnings: 0
  
MySQL [mydb]> select * from students;
  
+------+----------+------+-------+
  
| id   | name     | age  | score |
  
+------+----------+------+-------+
  
| 1    | apple222 | 20   | 88    |
  
| 3    | xigua    | 10   | 50    |
  
| 2    | banana   | 30   | 68    |
  
| 4    | guapi    | 40   | 50    |
  
+------+----------+------+-------+
  
4 rows in set (0.00 sec)
  
MySQL [mydb]> delete from students where name='banana'; 没有delete权限
  
ERROR 1142 (42000): DELETE command denied to user 'wxtan2'@'192.168.8.101' for table 'students'
  
mysql> revoke update on mydb.students from 'wxtan2'@'192.168.8.%'; 回收update权限
  
mysql> flush privileges;
  
MySQL [mydb]> update students set name='apple545' where id='1'; 发现无法执行update命令
  
ERROR 1142 (42000): UPDATE command denied to user 'wxtan2'@'192.168.8.101' for table 'students'
  
MySQL [mydb]> insert into students value('6','guapi','40','50'); insert命令不受影响
  
Query OK, 1 row affected (0.00 sec)
  
MySQL [mydb]> select * from students; select命令不受影响
  
+------+----------+------+-------+
  
| id   | name     | age  | score |
  
+------+----------+------+-------+
  
| 1    | apple555 | 20   | 88    |
  
| 3    | xigua    | 10   | 50    |
  
| 2    | banana   | 30   | 68    |
  
| 4    | guapi    | 40   | 50    |
  
| 6    | guapi    | 40   | 50    |
  
+------+----------+------+-------+
  
mysql> show grants for 'wxtan2'@'192.168.8.%'; 查询用户的权限命令;usage表示只有使用权
  
+-----------------------------------------------------------------------------------------------------------------+
  
| Grants for wxtan2@192.168.8.%                                                                                   |
  
+-----------------------------------------------------------------------------------------------------------------+
  
| GRANT USAGE ON *.* TO 'wxtan2'@'192.168.8.%' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' |
  
| GRANT SELECT, INSERT ON `mydb`.`students` TO 'wxtan2'@'192.168.8.%'                                             |
  
+-----------------------------------------------------------------------------------------------------------------+
  
mysql> grant all privileges on mydb.students to 'wxtan2'@'192.168.8.%' identified by '123456'; 给所有权限,并修改密码
  
Query OK, 0 rows affected (0.00 sec)
  
mysql> flush privileges;
  
Query OK, 0 rows affected (0.00 sec)
  
第四篇 修改数据库默认密码
  
/etc/init.d/mysql stop   (service mysqld stop )
  
/usr/bin/mysqld_safe --skip-grant-tables
  
另外开个SSH连接
  
[root@localhost ~]# mysql
  
mysql>use mysql;
  
mysql>update user set password=password("123456") where user="root";
  
mysql>flush privileges;
  
mysql>exit
  
CTRL+Z 终止进程
  
[root@apple ~]# jobs
  
[1]+  Stopped                 mysqld_safe --skip-grant-tables
  
[root@apple ~]# kill %1
  
[root@apple ~]# service mysqld start
  
Starting MySQL SUCCESS!
  
方法1: 用SET PASSWORD命令
  
首先登录MySQL。
  
格式:mysql> set password for 用户名@localhost = password('新密码');
  
例子:mysql> set password for root@localhost = password('123');
  
方法2:用mysqladmin
  
格式:mysqladmin -u用户名 -p旧密码 password 新密码
  
例子:mysqladmin -uroot -p123456 password 123
  
方法3:用UPDATE直接编辑user表
  
首先登录MySQL。
  
mysql> use mysql;
  
mysql> update user set password=password('123') where user='root' and host='localhost';
  
mysql> flush privileges;
  
方法4:在忘记root密码的时候,可以这样
  
以windows为例:
  
1. 关闭正在运行的MySQL服务。
  
2. 打开DOS窗口,转到mysql\bin目录。
  
3. 输入mysqld --skip-grant-tables 回车。--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
  
4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。
  
5. 输入mysql回车,如果成功,将出现MySQL提示符 >。
  
6. 连接权限数据库: use mysql; 。
  
6. 改密码:update user set password=password("123") where user="root";(别忘了最后加分号) 。
  
7. 刷新权限(必须步骤):flush privileges; 。
  
8. 退出 quit。
  
9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-615554-1-1.html 上篇帖子: MySQL的基础命令<一> 下篇帖子: 数据库中的注释(mysql)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表