Java面试之数据库常用语句

零、用户管理:

  • 新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow';
  • 更改密码:>SET PASSWORD FOR name=PASSWORD('fdddfd');
  • 权限管理:
  1. >SHOW GRANTS FOR name; //查看name用户权限
  2. >GRANT SELECT ON db_name.* TO name; //给name用户db_name数据库的所有权限
  3. >REVOKE SELECT ON db_name.* TO name; //GRANT的反操作,去除权限;

一、数据库操作: 

  • 查看数据库:>SHOW DATABASES;
  • 创建数据库:>CREATE DATABASE db_name; //db_name为数据库名
  • 使用数据库:>USE db_name;
  • 删除数据库:>DROP DATABASE db_name;

二、创建表:

  • 创建表:

>CREATE TABLE table_name(

>id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, //id值,无符号、非空、递增——唯一性,可做主键。

>name VARCHAR(60) NOT NULL

>score TINYINT UNSIGNED NOT NULL DEFAULT 0, //设置默认列值

>PRIMARY KEY(id)

>)ENGINE=InnoDB //设置表的存储引擎,一般常用InnoDB和MyISAM;InnoDB可靠,支持事务;MyISAM高效不支持全文检索

>DEFAULT charset=utf8; //设置默认的编码,防止数据库中文乱码

如果有条件的创建数据表还可以使用 >CREATE TABLE IF NOT EXISTS tb_name(........

  • 复制表:

>CREATE TABLE tb_name2 SELECT * FROM tb_name;//或者部分复制:

>CREATE TABLE tb_name2 SELECT id,name FROM tb_name;

  • 创建临时表:

>CREATE TEMPORARY TABLE tb_name(这里和创建普通表一样);

  • 查看数据库中可用的表:

>SHOW TABLES;

  • 查看表的结构:

>DESCRIBE tb_name;

也可以使用:>SHOW COLUMNS in tb_name; //from也可以

  • 删除表:>DROP [ TEMPORARY ] TABLE [ IF EXISTS ] tb_name[ ,tb_name2.......];

实例:>DROP TABLE IF EXISTS tb_name;

  • 表重命名:

>RENAME TABLE name_old TO name_new;

还可以使用: >ALTER TABLE name_old RENAME name_new;

三、修改表:

  • 更改表结构:

>ALTER TABLE tb_name ADD[CHANGE,RENAME,DROP] ...要更改的内容...

实例:

>ALTER TABLE tb_name ADD COLUMN address varchar(80) NOT NULL;

>ALTER TABLE tb_name DROP address;

>ALTER TABLE tb_name CHANGE score score SMALLINT(4) NOT NULL;

四、插入数据:

  • 插入数据:

>INSERT INTO tb_name(id,name,score)VALUES(NULL,'张三',140),(NULL,'张四',178),(NULL,'张五',134);

这里的插入多条数据直接在后边加上逗号,直接写入插入的数据即可;主键id是自增的列,可以不用写。

  • 插入检索出来的数据:

>INSERT INTO tb_name(name,score) SELECT name,score FROM tb_name2;

五、更新数据:

  • 指定更新数据:

>UPDATE tb_name SET score=189 WHERE id=2;

>UPDATE tablename SET columnName=NewValue [ WHERE condition ]

六、删除数据:

  • 删除数据:>DELETE FROM tb_name WHERE id=3;

七、条件控制:

  • WHERE 语句: >SELECT * FROM tb_name WHERE id=3;
  • HAVING 语句:>SELECT * FROM tb_name GROUP BY score HAVING count(*)>2
  • 相关条件控制符:
  1. =、>、<、<>、IN(1,2,3......)、BETWEEN a AND b、NOT
  2. AND 、OR
  3. Linke()用法中 % 为匹配任意、 _ 匹配一个字符(可以是汉字)
  4. IS NULL 空值检测

八、MySQL的正则表达式:

  • Mysql支持REGEXP的正则表达式:>SELECT * FROM tb_name WHERE name REGEXP '^[A-D]' //找出以A-D 为开头的name
  • 特殊字符需要转义。

九、MySQL的一些函数:

  • 字符串链接——CONCAT()>SELECT CONCAT(name,'=>',score) FROM tb_name
  • 数学函数:AVG、SUM、MAX、MIN、COUNT;
  • 文本处理函数:TRIM、LOCATE、UPPER、LOWER、SUBSTRING
  • 运算符:+、-、*、\
  • 时间函数:DATE()、CURTIME()、DAY()、YEAR()、NOW().....

十、分组查询:

  • 分组查询可以按照指定的列进行分组:>SELECT COUNT(*) FROM tb_name GROUP BY score HAVING COUNT(*)>1;
  • 条件使用Having;
  • ORDER BY 排序:ORDER BY DESC|ASC =>按数据的降序和升序排列

十一、UNION规则——可以执行两个语句(可以去除重复行)

十二、全文检索——MATCH和AGAINST

  • SELECT MATCH(note_text)AGAINST('PICASO') FROM tb_name;
  • InnoDB引擎不支持全文检索,MyISAM可以;

十三、视图

  • 创建视图:>CREATE VIEW name AS SELECT * FROM tb_name WHERE ~~ ORDER BY ~~;
  • 视图的特殊作用:
  1. 简化表之间的联结(把联结写在select中);
  2. 重新格式化输出检索的数据(TRIM,CONCAT等函数);
  3. 过滤不想要的数据(select部分)
  4. 使用视图计算字段值,如汇总这样的值。

十四、使用存储过程:

  个人理解,存储过程就是一个自定义函数,有局部变量参数,可传入参数,可以返回值,不过这语法够呆滞的~~~

  • 创建存储过程:

>CREATE PROCEDURE pro(

>IN num INT,OUT total INT)

>BEGIN

>SELECT SUM(score) INTO total FROM tb_name WHERE id=num;

>END;

***这里的 IN (传递一个值给存储过程),OUT(从存储过程传出一个值),INOUT(对存储过程传入、传出),INTO(保存变量)

  • 调用存储过程:

>CALL pro(13,@total) //这里的存储过程两个变量,一个是IN一个是OUT,这里的OUT也是需要写上的,不写会出错

>SELECT @total //这里就可以看到结果了;

  • 存储过程的其他操作:

>SHOW PROCEDURE STATUS; //显示当期的存储过程

>DROP PROCEDURE pro; //删除指定存储过程

十五、使用游标:

  • 游标的操作

>CREATE PROCEDURE pro()

>BEGIN

>DECLARE ordername CURSOR FOR

>SELECT order_num FROM orders;

>END;

>OPEN ordername; //打开游标

>CLOSE ordername; //关闭游标

十六、触发器:触发器是指在进行某项指定操作时,触发触发器内指定的操作;

  • 支持触发器的语句有DELETE、INSERT、UPDATE,其他均不支持
  • 创建触发器:

>CREATE TRIGGER trig AFTER INSERT ON ORDERS FOR EACH ROW SELECT NEW.orser_name;

>INSERT语句,触发语句,返回一个值

  • 删除触发器

>DROP TRIGGER trig;

十七、语法整理:

  • ALTER TABLE(修改表)

ALTER TABLE table_name

( ADD column datatype [ NULL | NOT NULL ] [ CONSTRAINTS ]

CHANGE column datatype COLUMNS [ NULL | NOT NULL ] [ CONSTRAINTS ]

DROP column,

       。。。。

)

  • COMMIT(处理事务)

>COMMIT;

  • CREATE INDEX(在一个或多个列上创建索引)

CREATE INDEX index_name ON tb_name (column [ ASC | DESC ] , .......);

  • CREATE PROCEDURE (创建存储过程)

CREATE PROCEDURE pro([ parameters ])

BEGIN

........

END

  • CREATE TABLE(创建表)

CREATE TABLE tb_name(

column_name datetype [ NULL | NOT NULL ] [ condtraints] ,

column_name datetype [ NULL | NOT NULL ] [ condtraints] ,

.......

PRIMARY KEY( column_name )

)ENGINE=[ InnoDB | MyiSAM ]DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

  • CREATE USER(创建用户)

CREATE USER user_name [ @hostname ] [ IDENTIFIED BY [ PASSWORD ] 'pass_word' ];

  • CREATE VIEW (在一个或多个表上创建视图)

CREATE [ OR REPLACE ] VIEW view_name AS SELECT。。。。。。

  • DELETE (从表中删除一行或多行)

DELETE FROM table_name [WHERE ......]

  • DROP(永久删除数据库及对象,如视图、索引等)

DROP DATEBASE | INDEX | PROCEDURE | TABLE | TRIGGER | USER | VIEW name

  • INSERT (给表添加行)

INSERT INTO tb_name [ ( columns,...... ) ] VALUES(value1,............);

使用SELECT值插入:

INSERT INTO tb_name [ ( columns,...... ) ]

SELECT columns , ....... FROM tb_name [ WHERE ...... ] ;

  • ROLLBACK(撤销一个事务处理块)

ROLLBACK [ TO savapointname ];

  • SAVEPOINT(为ROLLBACK设置保留点)

SAVEPOINT sp1;

  • SELECT (检索数据,显示信息)

SELECT column_name,.....FROM tb_name [ WHERE ] [ UNION ] [ RROUP BY ] [ HAVING ] [ ORDER BY ]

  • START TRANSACTION (一个新的事务处理块的开始)

START TRANSACTION

  • UPDATE(更新一个表中的一行或多行)

UPDATE tb_name SET column=value,......[ where ]

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏battcn

MySQL - 索引详解

索引依托于存储引擎的实现,因此,每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。所有存储引擎支持每个表至少16个索引,总索引长度至...

14120
来自专栏PHP在线

MyISAM InnoDB 区别(回顾)

索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。 在数据库表中,对字段建立索引可以大大提高查...

34950
来自专栏开源优测

SQL常用的基础语法

SQL常用的语法 本文主要分享SQL日常使用过程中常用的语法样式。 在sql语句中,主要的关键词有SELECT、INSERT、UPDATE、DELETE、ALE...

32280
来自专栏静默虚空的博客

sql 语言

sql 语言 DDL DDL 全称 Data Definition Language,即数据定义语言。 DATABASE 创建数据库 CREATE DATABA...

21670
来自专栏PHP在线

MySQL DELETE语句和TRUNCATE TABLE语句的区别

MySQL DELETE语句和TRUNCATE TABLE语句功能相似,但是二者究竟有何区别呢?下文就将为您分析MySQL DELETE语句和TRUNCATE ...

394140
来自专栏Java后端生活

MySQL(十五)DDL之常见的约束

18740
来自专栏java工会

十个mysql语句的优化方法

20960
来自专栏java达人

left join 过滤条件写在on后面和写在where 后面的区别

create table t1(id int, feild int); insert into t1 values(1 , 1); insert into t1...

281100
来自专栏PHP在线

MySQL索引类型一览 让MySQL高效运行起来

索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。 在数据库表中,对字段建立索引可以大大提高...

35650
来自专栏极客生活

mysql 数据去重

从excel中导入了一部分数据到mysql中,有很多数据是重复的,而且没有主键,需要按照其中已经存在某一列对数据进行去重。

13620

扫码关注云+社区

领取腾讯云代金券