mysql

mysql常用命令

启动、关闭MySQL服务:
	net stop mysql;
	net start mysql;

查看mysql版本:
	mysql -V

登录:
	mysql -uroot -p密码;

退出:
	exit;

查看mysql中有哪些数据库:
	show databases;

使用某个数据库:
	use 数据库名;

创建数据库:
	create datebase 数据库名;
	
删除数据库:
	drop database 数据库名;

查看某个数据库下有哪些表:
	show tables;

查看mysql数据库的版本号:
	select version();
	
查看当前使用的是哪个数据库?
	select database();
	
导入一下提前准备好的数据:
	mysql> source D:\course\03-MySQL\document\bjpowernode.sql
	注意:路径中不要有中文!!!!
	
不看表中的数据,只看表的结构,有一个命令:
	desc 表名;
	(describe的缩写;)
	
查看表的创建语句
show create table 表名;

Like 可以实现模糊查询,
%匹配任意字符出现的个数
_只匹配一个字符
Like 中的表达式必须放到单引号中 双引号中,以下写法是错误的:

在SQL中定义关系模式

简单表定义
CREATE TABLE R(   );

复制表
create table 新表名 as 
select ...
from ...

删除表
DROP  TABLE  R;

更改关系模式
ALTER TABLE R Add 列名 数据类型 [NOT] NULL
ALTER TABLE R Drop 列名

默认值
系统默认的缺省值通常为NULL, 可以自定义,在定义表时在属性类型后加: Default 值
例    gender CHAR(1) DEFAULT ’?’;

常见的约束
a) 非空约束, not null
b) 唯一约束, unique
c) 主键约束, primary key
d) 外键约束, foreign key

SQL语言有两种说明主键的方式。
	方式1Create Table语句中,某属性说明之后加Primary Key
	方式2:属性表之后,加Primary Key(属性1,属性2,…)
	若主键有多个属性,则只能用方式2

SQL的简单查询

SQL的简单查询
SELECT  [ ALL | DISTINCT ]  select-list
        FROM  R
        [ WHERE  cond ]
        group by [分组]
		having [过滤分组后的数据,不可以单独的出现]
        [ ORDER BY  { expression | integer }  [ ASC | DESC ],]
其中:
    select-list :

   * | { column-name | expression } [ AS alias-name ], ...
     	所有SQL语句的关键词、表名、列名大小写无关。
     	SQL语句可多行书写。
     	SQL语句用分号(英文)结尾。

SQL中的投影
	SELECT子句如何构成?

   * 表示所有属性,按缺省次序排列。
     SELECT  *  FROM  Movie;
     	可投影到若干属性:
        SELECT  title,length  
        FROM  Movie;AS 别名(改名运算,改变列名,AS可省略)
        SELECT  title AS name, length AS  duration  
        FROM  Movie;
     	表达式
        SELECT title AS name, length*0.016667 AS lengthInHours 
        FROM  Movie;
     	常量也可作为一列
        SELECT title, length*0.016667 AS length, ‘hrs.' AS inHours 
        FROM  Movie;

SQL中的选择
	WHERE子句如何确定条件condition?
	运算对象:属性、常量、别名
	算术运算符: +  -  *  /
	比较运算符: =  <>  >  >=  <  <=  IS [NOT] NULL
	逻辑运算符:NOT  AND  OR

字符串模式匹配LIKE
	s  [NOT] LIKE  p, 其中s是一个字符串,p是包含%或下划线的字符串模式。
	匹配规则:
p中普通字符只和s中完全相同的字符匹配;
%可与s中0个或多个字符匹配;
一个下划线可与s中一个任意字符(或汉字)匹配。 

空值运算的规则
⒈对NULL和任何值(包括另一个NULL值)进行算术运算(×或÷),其结果仍然是空值。
⒉当使用比较运算符(=或>),比较NULL值和任意值(包括另一个NULL值),结果都是UNKNOWN值。
⒊正确判定x的值是否为NULL的方式是用表达式x is NULL或x is not NULL表示

Unknown值作为一个逻辑值,与True和False构成三值逻辑。
    逻辑运算:NOT非、AND且、OR或
    设:True=1;False=0;Unknown=0.5
    那么 a AND b = Min(a,b) 
            a OR b = Max(a,b)
            NOT a = 1 - a

输出的排序
ASC表示升序(缺省);DESC表示降序。
   SELECT  *  
   FROM  Movie
   WHERE studioName='Disney' AND year=1990 
   ORDER  BY  length  DESC,title;

查询中并、交、差运算
A∪B = A union B;
A∩B  等价于  A = ANY(B)  等价于   A IN B;
A – B  等价于  A<>ALL(B) 等价于  A NOT IN B;

关系的条件表达式
	[NOT] Exists (Subquery):当且仅当子查询结果非空,条件为真。
	expression compare ANY (Subquery):比较子查询的结果的任意一个值。
	expression compare ALL (Subquery):比较子查询结果的所有的值。
	expression [NOT] IN (Subquery):当且仅当表达式的值出现在子查询的结果集中,条件为真。

CROSS JOIN就是笛卡尔积的SQL的表示形式,又称为交叉连接。
R1 JOIN R2 ON cond表示R1 condR2,表示为θ连接
   等价于From R1, R2 Where cond
自然连接   R1 NATURAL JOIN R2

消除重复    Select distinct …

分组Group By :根据一列或几列的值把元组分成若干组,有相同分组值的元组作为一组,每个组再分别进行聚合运算。
在包含聚合运算的Select子句中,只有在Group By子句中出现的属性才能在Select子句中以非聚合形式出现。

Having子句  在分组聚合之后按某条件过滤分组,使用Having子句确定条件。
	Where子句中关于常量的条件可以Having子句条件替代。
	反之:Having子句中有关聚合变量的条件不能用Where条件替代。

数据库更新

插入   INSERT  INTO  R(A1,A2,,An)  VALUES  (V1,V2,,Vn);
	  若(A1,A2,,An)不是R的所有属性,则未列出的属性取其缺省值。
	若(A1,A2,,An)省略,则(V1,V2,,Vn)按属性的缺省次序排列。
	另一种Insert语句:
   INSERT  INTO  R(A1,A2,, An) 
     SELECT  B1,B2,,Bn
     FROM  ...
     WHERE ...


删除 DELETE  FROM  R  WHERE  cond; 
    关系R中满足条件cond的记录将被删除。条件省略将删除所有记录。

修改   UPDATE  R  SET  A1=V1, A2=V2,, An=Vn  WHERE  cond;
满足条件cond的每个记录的A1属性值改为V1, A2属性值改为V2, …
条件省略将修改所有记录。

用户创建、授权

创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
说明:
username:你将创建的用户名
host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

例子:
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';

授权

GRANT privileges ON databasename.tablename TO 'username'@'host'
说明:
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
例子:
GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
GRANT ALL ON maindataplus.* TO 'pig'@'%';
注意:
用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

设置与更改用户密码

SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

如果是当前登陆用户用:
SET PASSWORD = PASSWORD("newpassword");

SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");

撤销用户权限

命令:

REVOKE privilege ON databasename.tablename FROM 'username'@'host';
## 说明:

privilege, databasename, tablename:同授权部分

### 例子:

```html
REVOKE SELECT ON *.* FROM 'pig'@'%';
```

### 注意:

假如你在给用户`'pig'@'%'`授权的时候是这样的(或类似的):`GRANT SELECT ON test.user TO 'pig'@'%'`,则在使用`REVOKE SELECT ON *.* FROM 'pig'@'%';`命令并不能撤销该用户对test[数据](https://so.csdn.net/so/search?q=数据&spm=1001.2101.3001.7020)库中user表的`SELECT` 操作。相反,如果授权使用的是`GRANT SELECT ON *.* TO 'pig'@'%';`则`REVOKE SELECT ON test.user FROM 'pig'@'%';`命令也不能撤销该用户对test数据库中user表的`Select`权限。

具体信息可以用命令`SHOW GRANTS FOR 'pig'@'%';` 查看。

五.删除用户

命令:

DROP USER 'username'@'host';
posted @   awei666  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示