数据库入门级指令操作
Posted 中国思想史
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库入门级指令操作相关的知识,希望对你有一定的参考价值。
数据库操作
创建数据库 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
以上是关于数据库入门级指令操作的主要内容,如果未能解决你的问题,请参考以下文章