远行的心 发表于 2018-10-2 14:23:54

mysql-DDL-DML-DCL

  列名的修饰
  

unsigned  
auto_increment
  
default
  
comment
  
not null
  
null
  

  
unique
  
index
  
key
  
primary key
  

  
auto_increment 必须制定为 primary key
  

  sql语句的运算符
  

=赋值和判断都是  
!=
  
< > =
  
OR
  
AND
  
BETWEEN...AND
  
IN
  
NOT IN
  

  sql语句的分类

  DDL
  

show databases;  
use 数据库名;
  
create database 数据库名;
  
drop database 数据库名;
  
创建数据表结构
  
create table 表名 (
  列名 列类型 其他的关键词,
  ...
  列名 列类型 其他的关键词
  
);
  
show tables;
  
desc 表名;
  
show create table 表名;
  
drop table 表名;
  
truncate 表名;
  

  
修改表的字段属性
  
alter table 表名 modify 字段名 类型 字段修饰;
  

  
修改表的字段的整个属性(包括字段)
  
alter table 表名change 原字段 新字段 类型 字段修饰;
  

  
删除一整列
  
alter table 表名 drop 字段名;
  

  
添加一整列
  
alter table 表名 add 新字段 类型 字段修饰 after 原字段名;
  

  
重命名表名
  
alter table 原表名 rename 新表名;
  

  

  代码:
  

mysql> create database shop;  
mysql> use shop;
  
mysql> create table user(
  ->>  -> user_name varchar(20) not null,
  -> password char(32) not null,
  -> email varchar(50) not null,
  -> mobile char(11) not null,
  -> fee decimal(10,2) default 0.00 not null,
  -> age tinyint unsigned not null
  -> );
  

  DML数据操作语言
  insert into 表名(列1,列2,列3...) values(列值 1,列值 2...);
  

-- 对指定列进行插入  
mysql> insert into user(user_name,email) values ('liudehua','liudehua@163.com');
  

  
-- 全部插入
  
mysql> insert into user values(3,'liming','999999','liming@163.com',13666666666,522.39,28);
  

  
-- 插入所有(对有主键的可以不列出id)
  
mysql> insert into user(user_name,password,email,mobile,fee,age) values
  -> ('jack','123456','jack@163.com','13888888888',123.11,25);
  

  

  select * from 表名;
  update 表名 set 列1=列值1,列2=列值2 where 条件;
  

-- 将所有字段age的值都设置为了100  
mysql> update user set age=100;
  
-- 根据条件修改age字段的值
  
mysql> update user set age=200 where>  

  delete from 表名 where 条件;
  delete from 表名;再插入数据,则id的值是往后加1
  truncate 表名;再插入数据,则id的值从1开始
  drop table 表名; 则整个表的结构也被删除了
  Mysql之DCL设置root指定的ip访问
  查看哪些用户,通过哪些ip访问mysql服务器
  

mysql> use mysql;  
mysql> select user,host from user;
  
+---------------+-----------+
  
| user          | host      |
  
+---------------+-----------+
  
| mysql.session | localhost |
  
| mysql.sys   | localhost |
  
| root          | localhost |
  
+---------------+-----------+
  

  限制数据库用户root只能通过127.0.0.1访问mysql服务器
  

mysql> update user set host='127.0.0.1' where user='root';  
mysql> flush privileges;
  

  开启一个新的窗口,连接数据库

  连接不上,因为默认采用的是 mysql -uroot -hlocalhost -p'password'
  改成这样如下就可以连接mysql了
  mysql -uroot -h 127.0.0.1 -p'password'
  编码问题
  windows系统的编码为gbk
  如果装的是windows版的mysql,mysql的编码为utf8的话,则可能出现编码问题
  1.查看mysql的编码

  2.将mysql的编码修改为与windows相同的编码为gbk
  mysql> set names gbk;
  注:这样只是临时解决了问题
  如果重新连接mysql,则又会出现乱码问题,这样只能在mysql的配置文件中修改mysql.ini文件
  
  default-character-set=gbk
  设置mysql数据库root的密码
  1.在mysql数据库里修改root密码
  

mysql> use mysql;  
mysql> update user set authentication_string=password('admin') where user='root';
  
mysql> flush privileges;
  

  2.知道root旧密码的情况下修改root的密码
  

mysqladmin -uroot -p'old_password' password 'new_password'  

  3.修改配置文件my.cnf跳过授权,再进入到数据库里修改root的密码
  

service mysqld stop  
sed -ri '1a\skip-grant-tables' /etc/my.cnf
  
service mysqld start
  
mysql
  
mysql> update mysql.user set authentication_string=password('123456') where user='root';
  
mysql> flush privileges;
  
mysql> \q
  
sed -ri '/skip-grant-tables/d' /etc/my.cnf
  
service mysqld restart
  

  Mysql之DCL普通用户的创建授权以及权限回收
  

mysql> create user 'test'@'192.168.221.10'>
mysql> flush privileges;
  
mysql> select host,user,authentication_string from mysql.user;
  
+----------------+---------------+-------------------------------------------+
  
| host         | user          | authentication_string                     |
  
+----------------+---------------+-------------------------------------------+
  
| localhost      | root          | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  
| localhost      | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
  
| localhost      | mysql.sys   | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
  
| 192.168.221.10 | test          | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  
+----------------+---------------+-------------------------------------------+
  
mysql> \q
  

  使用test用户登陆
  

mysql -utest -h192.168.221.10 -p'123456'  
mysql> select user();
  
+---------------------+
  
| user()            |
  
+---------------------+
  
| test@192.168.221.10 |
  
+---------------------+
  

  使用root给test用户授权
  

mysql> grant update,insert,delete on shop.* to 'test'@'192.168.221.10';  
mysql> flush privileges;
  

  授权给test所有的权限
  

mysql> grant all privileges on *.* to 'test'@'192.168.221.10';  
mysql> flush privileges;
  

  创建用户并授权
  

mysql> grant all privileges on shop.* to 'test1'@'192.168.221.10'>
mysql> flush privileges;
  

  删除用户
  

mysql> drop user 'test'@'192.168.221.10';

页: [1]
查看完整版本: mysql-DDL-DML-DCL