数据库入门级指令操作

数据库操作

创建数据库 create database 数据库名;

查看数据库 show databases;

选择指定数据库 use 数据库名;

删除数据库 drop database 数据库名;

数据表操作

创建基本表

createtable <表名> (<列名><数据类型>[列级完整性约束条件] [,<列名><数据类型>[列级完整性约束条件]......... [,<表级完整性约束条件>]);

例:create table student  ( Sno char(5) not null unique, Sname char(20)unique, Ssex char(1), Sage int, Sdept char(15));

UNIQUE 约束唯一标识数据库表中的每条记录。

每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束

表结构的修改

查看数据库中所有的表 show tables;(前提是使用use database 数据库;)

describe tablename; 查看表的结构

修改基本表 alert  table  <表名>

[add<新列名> <数据类型> [完整性约束]]

[drop<完整性约束名>]

[modify<列名><数据类型>];

add: 用于向表中增加新列及新列相关的完整性约束条件,新的列增加成功后不带任何数据

drop:用于删除指定的完整性约束条件

modify:用于修改原来的列定义,包括修改列名和数据类型,列数据类型修改后可能会丢失原有的数据

删除一个字段:

altertable table_name drop字段名;

示例:

alert table student add Scome date;

alert table student modify Sage smallint;

alert table student drop unique(Sname);

删除指定数据表drop table 表名;

显示当前mysql版本和当前日期

select version(),current_date;

将表中记录清空:delete from 表名;

显示表中的记录:select * from 表名;

更新表中数据:update 表名 set字段名1=’a',字段名2=’b’where 字段名3=’c';

导入.sql文件命令:use 数据库名;source d:/mysql.sql;

命令行修改root密码:

UPDATE mysql.user SET password=PASSWORD(’新密码’) WHERE User=’root’;

FLUSH PRIVILEGES;//刷新数据库

显示use的数据库名:SELECTDATABASE();

显示当前的user:SELECTUSER();

一个建库和建表以及插入数据的实例

drop database if exists school; //如果存在SCHOOL则删除

create database school;           //建立库SCHOOL

use school;   //打开库SCHOOL

create table teacher //建立表TEACHER

(

id int(3)auto_increment not null primary key,

name char(10) not null,

address varchar(50) default ‘深圳’,

year date

); //建表结束

//以下为插入字段

insert into teacher values(”,’allen’,'大连一中’,'1976-10-10′);

insert into teacher values(”,’jack’,'大连二中’,'1975-12-23′);

数据库备份

导出文件默认是存在mysql/bin目录下

mysqldump -u 用户名 -p数据库名 > 导出的文件名

mysqldump -u user_name -p123456database_name > outfile_name.sql

mysqldump -u 用户名 -p数据库名 表名> 导出的文件名

mysqldump -u user_name -p database_nametable_name > outfile_name.sql

Mysql命令查询一个表的记录总数selectcount(*) from tablename;

重命名表:alter table t1 rename t2;

更改表的字符集(防止中文乱码出现查询错误)alter table users characterset GBK;

SQL模糊查询:

SQL提供了四种匹配模式:

1,% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

比如 SELECT * FROM [user] WHERE u_name LIKE'%三%'

将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。

 另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件

SELECT* FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE'%猫%'

若使用 SELECT * FROM [user] WHERE u_name LIKE'%三%猫%'

虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

2,_ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:

 比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'

只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;

 再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';

只找出“三脚猫”这样name为三个字且第一个字是“三”的;

3,[ ] :表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

 比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'

将找出“张三”、“李三”、“王三”(而不是“张李王三”);

 如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”

SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'

将找出“老1”、“老2”、……、“老9”;

4,[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

 比如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'

将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;

SELECT* FROM [user] WHERE u_name LIKE '老[^1-4]';

将排除“老1”到“老4”,寻找“老5”、“老6”、……

查询内容包含通配符时

由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。据此我们写出以下函数:

functionsqlencode(str)

str=replace(str,"[","[[]")'此句一定要在最前

str=replace(str,"_","[_]")

str=replace(str,"%","[%]")

sqlencode=str

endfunction

下面给出一些示例:

数据库中有如下三个表:

学生表(学号,姓名,性别,系部,年龄)

选课表(学号,课程号,成绩)

课程表(课程号,课程名,学分)

从学生表中查询所有学生的信息,并分别赋予一个别名

select 学号as xuehao,姓名as xingming,性别as xingbie,系部as xibu,年龄as nianling from 学生表

从学生表中查询学号在1101到1199之间的所有学生的信息

select * from 学生表 where学号between 1101 and 1199

从学生表中查询姓名以A开头的学生的信息

select * from 学生表 where姓名LIKE'A%'

从学生表中查询姓名的第三个字符是A的学生的学号和姓名

select 学号,姓名from 学生表 where 姓名LIKE'__A%'

从学生表中查询姓名中包含“llen”且姓名只有5个字符的学生的学号和姓名

select 学号,姓名from 学生表 where 姓名LIKE'%llen%'and len(姓名)=5

从学生表中查询最大年龄和最小年龄

select max(年龄)最大年龄,min(年龄)最小年龄from 学生表

从学生表中查询所有学生的平均年龄

select avg(年龄)平均年龄from 学生表

从学生表中查询学校所有系的名字

select distinct 系部 from学生表

从学生表中查询学校共有多少个系

select count(distinct 系部)系部总和from 学生表

从选课表中查询所有学生的选课情况

select distinct 课程号from 选课表

查询选修了C02课程的学生成绩的前三名

select top 3 姓名,成绩

from 选课表join 学生表on 选课表.学号=学生表.学号

where 课程号='C02'

order by 成绩desc

猜你喜欢

转载自blog.csdn.net/songkai320/article/details/78156696