基本语句学习
-
创建数据库
CREATE DATABASE 数据库名; -
删除数据库
drop database <数据库名>; -
创建数据库表
CREATE TABLE table_name (column_name column_type);
举例例如下:
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,CHARSET 设置编码。
-
删除数据表
DROP TABLE table_name ; -
删表数据方法
如果要清空表中的所有记录,可以使用下面的两种方法:
DELETE FROM table_name
TRUNCATE TABLE table_name -
插入数据
INSERT INTO table_name ( field1, field2,...fieldN ) VALUE ( value1, value2,...valueN );
举例如下
root@host# mysql -u root -p password;
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> INSERT INTO runoob_tbl
-> (runoob_title, runoob_author, submission_date)
-> VALUES
-> ("学习 PHP", "菜鸟教程", NOW());
Query OK, 1 rows affected, 1 warnings (0.01 sec)
mysql> INSERT INTO runoob_tbl
-> (runoob_title, runoob_author, submission_date)
-> VALUES
-> ("学习 MySQL", "菜鸟教程", NOW());
Query OK, 1 rows affected, 1 warnings (0.01 sec)
mysql> INSERT INTO runoob_tbl
-> (runoob_title, runoob_author, submission_date)
-> VALUES
-> ("JAVA 教程", "RUNOOB.COM", '2016-05-06');
Query OK, 1 rows affected (0.00 sec)
mysql>
注意: 使用箭头标记 -> 不是 SQL 语句的一部分,它仅仅表示一个新行,如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写 SQL 语句,SQL 语句的命令结束符为分号 ;。
在以上实例中,我们并没有提供 runoob_id 的数据,因为该字段我们在创建表的时候已经设置它为 AUTO_INCREMENT(自动增加) 属性。 所以,该字段会自动递增而不需要我们去设置。实例中 NOW() 是一个 MySQL 函数,该函数返回日期和时间。
-
更新数据
UPDATE table_name SET field1=new-value1, field2=new-value2 WHERE Clause]
举例:
mysql> UPDATE runoob_tbl SET runoob_title=‘学习 C++’ WHERE runoob_id=3; -
数据库授权
grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。
grant select on testdb.* to common_user@'%'
grant insert on testdb.* to common_user@'%'
grant update on testdb.* to common_user@'%'
grant delete on testdb.* to common_user@'%'
或者用:grant select, insert, update, delete on testdb.* to common_user@'%'
- grant 数据库开发人员,创建表、索引、视图、存储过程、函数等权限。
grant create on testdb.* to developer@'192.168.0.%';
grant alter on testdb.* to developer@'192.168.0.%';
grant drop on testdb.* to developer@'192.168.0.%';
grant 操作 MySQL 外键权限。
grant references on testdb.* to developer@'192.168.0.%';
grant 操作 MySQL 临时表权限。
grant create temporary tables on testdb.* to developer@'192.168.0.%';
grant 操作 MySQL 索引权限。
grant index on testdb.* to developer@'192.168.0.%';
grant 操作 MySQL 视图、查看视图源代码 权限。
grant create view on testdb.* to developer@'192.168.0.%';
grant show view on testdb.* to developer@'192.168.0.%';
grant 操作 MySQL 存储过程、函数 权限。
grant create routine on testdb.* to developer@'192.168.0.%'; -- now, can show procedure status
grant alter routine on testdb.* to developer@'192.168.0.%'; -- now, you can drop a procedure
grant execute on testdb.* to developer@'192.168.0.%';
- 允许所有主机访问
mysql> use mysql;
mysql> update user set host = '%' where user = 'root';
mysql> select host, user from user;
mysql> flush privileges;
- 查看权限的方法
show grants for root@localhost - DDL(Data Definition Language)数据定义语言:
适用范围:对数据库中的某些对象(例如,database,table)进行管理,如Create,Alter和Drop.
一、DDL(数据定义语言,Data Definition Language)
建库、建表、设置约束等:create\drop\alter
1、创建数据库:
create database IF NOT EXISTS hncu CHARACTER SET utf8;
2、创建表格:
use hncu;
create table IF NOT EXISTS stud(
id int,
name varchar(30),
age int
);
3、更改表结构(设置约束)
desc stud; //查看表结构
alter table stud drop column age;
alter table stud add column age int;
4、删除表、删除数据库
drop table stud;
drop database hncu;
二、DML (数据操纵语言,Data Manipulation Language )
主要指数据的增删查改: Select\delete\update\insert\call
select * from stud;
select name,age from stud; //查询指定的列
select name as 姓名, age as 年龄 from stud;