




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MySQL数据库基础部分
MySQL数据库常用数据库SQLServer、OracleMySQL、DB2SyBaseMySQL数据库的安装和配置数据库和数据库实例使用命令行窗口连接MySQL数据库实例mysql–u用户名–p密码
数据库服务器、数据库和表的关系MySQLDBDB表表表Client所谓数据库服务器,是指在机器上装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。数据库服务器、数据库和表的关系如图所示:
数据在数据库中的存储方式id=1name=“lisi”age=23User对象idnameage1lisi232wang24User表id=2name=“wang”age=24行(row)列(column)整个表可以看作为一个类表的一行称之为一条记录类的实例表中一列代表具体类实例的数据User对象
创建数据库CREATEDATABASE[IFNOTEXISTS]db_name
[create_specification[,create_specification]...]
create_specification:
[DEFAULT]CHARACTERSETcharset_name
[DEFAULT]COLLATEcollation_name
CHARACTERSET:指定数据库采用的字符集COLLATE:指定数据库字符集的比较方式(校对规则)练习:创建一个名称为mydb1的数据库。创建一个使用utf-8字符集的mydb2数据库。创建一个使用utf-8字符集,并带校对规则的mydb3数据库。
思考如何知道MySQL支持的编码和校对规则?mysql>showcharacterset;
查看、删除数据库显示数据库语句:SHOWDATABASES只是显示数据库的名字显示数据库创建语句:SHOWCREATEDATABASEdb_name
数据库删除语句:DROPDATABASE[IFEXISTS]db_name
练习:查看当前数据库服务器中的所有数据库查看前面创建的mydb2数据库的定义信息删除前面创建的mydb3数据库
修改数据库ALTERDATABASE[IFNOTEXISTS]db_name
[alter_specification[,alter_specification]...]
alter_specification:
[DEFAULT]CHARACTERSETcharset_name
|[DEFAULT]COLLATEcollation_name练习查看服务器中的数据库,并把其中某一个库的字符集修改为gb2312;
创建表(基本语句)CREATETABLEtable_name(
field1datatype, field2datatype, field3datatype)charactersetcharsetnamecollatecollatename;field:指定列名datatype:指定列类型注意:创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型。例:user对象
idint namestring passwordstring birthdaydateIdNamePasswordbirthdayintvarchar(10)varchar(10)date注意:创建表前,要先使用usedb语句使用库。
MySQL常用数据类型VARCHAR、BLOB和TEXT类是变长类型。每个类型的存储需求取决于列值的实际长度。
分类数据类型说明数值类型BIT(M)bitbit(8)TINYINT[UNSIGNED][ZEROFILL]byteBOOL,BOOLEANbooleanSMALLINT[UNSIGNED][ZEROFILL]shortINT[UNSIGNED][ZEROFILL]intBIGINT[UNSIGNED][ZEROFILL]longFLOAT[(M,D)][UNSIGNED][ZEROFILL]floatDOUBLE[(M,D)][UNSIGNED][ZEROFILL]double位类型。M指定位数,默认值1,范围1-64带符号的范围是-128到127。无符号0到255。使用0或1表示真或假2的16次方2的32次方2的64次方M指定显示长度,d指定小数位数表示比float精度更大的小数文本、二进制类型CHAR(size)char(20)max—255abc
VARCHAR(size)varchar(20)65535abcdeStringBLOBLONGBLOB大的二进制数据TEXT(clob)LONGTEXT(longclob)大文本数据固定长度字符串可变长度字符串二进制数据大文本时间日期DATE/DATETIME/TimeStamp日期类型(YYYY-MM-DD)(YYYY-MM-DDHH:MM:SS),TimeStamp表示时间戳,它可用于自动记录insert、update操作的时间
查看表查看表结构showcreatetable表名显示表的创建结构desc表名;
以表格方式显示字段showcolumnsfrom表名;describe表名;面试题
int(3)和int的区别?createtablet(tint(3)zerofill);
如何快速构建相同表结构?
createtablestulikeusers;
创建表练习创建一个员工表字段属性Id整形name字符型gender字符型或bit型birthday日期型entry_date日期型job字符型salary小数型resume大文本型
修改表使用ALTERTABLE语句追加,修改,或删除列的语法.ALTERTABLEtableADD
(columndatatype[DEFAULTexpr] [,columndatatype]...);ALTERTABLEtableMODIFY
(columndatatype[DEFAULTexpr] [,columndatatype]...);ALTERTABLEtableDROP
(column);修改表的名称:Renametable
表名
to
新表名修改表的字符集:altertablestudentcharactersetutf8;
修改表练习在上面员工表的基础上增加一个image列。
altertableemployeeaddcolumnimageblob;修改job列,使其长度为60。删除sex列。表名改为users。列名name修改为username
数据库语句DataDefinitionStatementsDataManipulationStatementsDataControlStatementsMySQLUtilityStatementsMySQLTransactionalandLockingStatementsDatabaseAdministrationStatements
数据操作语句Insert语句(增加数据)Update语句(更新数据)Delete语句(删除数据)Select语句(查找数据)C:createR:readU:updateD:
delete
Insert语句INSERTINTO table[(column[,column...])]VALUES (value[,value...]);使用INSERT语句向表中插入数据。插入的数据应与字段的数据类型相同数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。在values中列出的数据位置必须与被加入的列的排列位置相对应。字符和日期型数据应包含在单引号中。插入空值,不指定或insertintotablevalue(null)//“”
Insert语句练习练习:使用insert语句向表中插入三个员工的信息。字段名字段类型id整形name字符串型sex字符或整数类型birthday日期型salary浮点型resume大文本型注意:字符和日期要包含在单引号中。
mysql中文乱码mysql有六处使用了字符集,分别为:client、connection、database、results、server、system。client是客户端使用的字符集。connection是连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型就按照服务器端默认的字符集设置。database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。results是数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。server是服务器安装时指定的默认字符集设定。system是数据库系统使用的字符集设定。查看和修改数据库字符集showvariableslike'character%';setcharacter_set_results=gbk;setcharacter_set_client=gbk;
Update语句UPDATE tbl_name
SETcol_name1=expr1[,col_name2=expr2...]
[WHEREwhere_definition]
使用update语句修改表中数据。UPDATE语法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。
Update语句练习练习:在上面创建的employee表中修改表中的纪录。要求将所有员工薪水修改为5000元。将姓名为’zhangsan’的员工薪水修改为3000元。将姓名为’lisi’的员工薪水修改为4000元,sex改为female。将xiaohong的薪水在原有基础上增加1000元。
Delete语句deletefromtbl_name
[WHEREwhere_definition]
使用delete语句删除表中数据。如果不使用where子句,将删除表中所有数据。Delete语句不能删除某一列的值(可使用update)使用delete语句仅删除记录,不删除表本身。如要删除表,使用droptable语句。删除表中数据也可使用TRUNCATETABLE语句,它和delete有所不同,原理是先删除表再创建新表。
Delete语句练习删除表中name为’zhangsan’的记录。删除表中所有记录。使用truncate删除表中记录。truncatetableemployee;
备份、恢复数据库表数据ALTERDATABASE[IFNOTEXISTS]db_name
[alter_specification[,alter_specification]...]
alter_specification:
[DEFAULT]CHARACTERSETcharset_name
|[DEFAULT]COLLATEcollation_name备份数据库表中的数据
mysqldump-u用户名-p数据库名>文件名.sql恢复数据库
source文件名.sql练习查看服务器中的数据库,并把其中某一个库的字符集修改为gb2312;
备份mydb2库中的数据,并恢复
Select语句(1)SELECT[DISTINCT]*|{column1,column2.column3..}
FROM table;Select指定查询哪些列的数据。column指定列名。*号代表查询所有列。From指定查询哪张表。DISTINCT可选,指显示结果时,是否剔除重复数据基本select语句
Select语句(1)练习:查询表中所有学生的信息。查询表中所有学生的姓名和对应的英语成绩。过滤表中英语成绩的重复数据。
Select语句(2)SELECT
*|{column1|expression,column2|expression,..}
FROM table;在select语句中可使用表达式对查询的列进行运算在select语句中可使用as语句SELECTcolumnas别名from表名;
Select语句(2)练习统计每个学生的总分。在所有学生总分数上加10分特长分。使用别名表示学生分数。
Select语句(3)使用where子句,进行过滤查询。练习:查询姓名为李一的学生成绩查询英语成绩大于等于90分的同学查询总分大于200分的所有同学
Select语句(4)在where子句中经常使用的运算符比较运算符><<=>==<>大于、小于、大于(小于)等于、不等于BETWEEN
...AND...显示在某一区间的值IN(set)显示在in列表中的值,例:in(100,200)LIKE‘张pattern’模糊查询_%ISNULL判断是否为空逻辑运算符and&&多个条件同时成立or||多个条件任一成立not!不成立,例:wherenot(salary>100);Like语句中,%代表零个或多个任意字符,_代表一个任意字符,例first_namelike‘_a%’;
Select语句(4)查询英语分数在80-90之间的同学。查询数学分数为89,90,91的同学。In查询所有姓李的学生英语成绩。查询数学分>80,语文分>80的同学。查询英语>80或者总分>200的同学
Select语句(5)SELECT
column1,column2.column3..
FROM table; orderbycolumnasc|descOrderby指定排序的列,排序的列即可是表中的列名,也可以是select语句后指定的列名。Asc升序、Desc降序(默认是升序)ORDERBY子句应位于SELECT语句的结尾。练习:对数学成绩排序后输出。对总分排序后输出,然后再按从高到低的顺序输出对姓李的学生成绩排序输出使用orderby子句排序查询结果。
合计函数-countSelectcount(*)|count(列名)fromtablename [WHEREwhere_definition]
练习:统计一个班级共有多少学生?统计数学成绩大于90的学生有多少个?统计总分大于250的人数有多少?Count(列名)返回某一列,行的总数注意:count(name)如果不统计name为null的行
合计函数-SUMSelectsum(列名){,sum(列名)…}fromtablename [WHEREwhere_definition]
练习:统计一个班级数学总成绩?统计一个班级语文、英语、数学各科的总成绩统计一个班级语文、英语、数学的成绩总和统计一个班级语文成绩平均分注意:sum仅对数值起作用,否则会报错。注意:对多列求和,“,”号不能少。Sum函数返回满足where条件的行的和
合计函数-AVGSelectavg(列名){,avg(列名)…}fromtablename [WHEREwhere_definition]
练习:求一个班级数学平均分?求一个班级总分平均分(语文总分+英语总分+数学总分)/人数=每一科的平均分累加和AVG函数返回满足where条件的一列的平均值
合计函数-MAX/MINSelectmax(列名)
fromtablename [WHEREwhere_definition]
练习:求班级最高分和最低分(数值范围在统计中特别有用)Max/min函数返回满足where条件的一列的最大/最小值
Select语句(6)SELECT
column1,column2.column3..FROM table; groupbycolumn
练习:对订单表中商品使用地址归类后,显示每一类商品的总价使用groupby子句对列进行分组SELECT
column1,column2.column3..
FROM table; groupbycolumnhaving...使用having子句过滤
练习:查询购买了几类商品,并且每类总价大于100的商品
注意:Having和where均可实现过滤,但在having可以使用合计函数,having通常跟在groupby后,它作用于组。
时间日期相关函数ADDTIME(date2,time_interval)将time_interval加到date2CURRENT_DATE()当前日期CURRENT_TIME()当前时间CURRENT_TIMESTAMP()当前时间戳DATE(datetime)返回datetime的日期部分DATE_ADD(date2,INTERVALd_valued_type)在date2中加上日期或时间DATE_SUB(date2,INTERVALd_valued_type)在date2上减去一个时间DATEDIFF(date1,date2)两个日期差NOW(
)当前时间YEAR|Month|DATE(datetime)年月日示例:selectaddtime('16:58:30','01:01:01');
注意:字符串、时间日期的引号问题
selectdate_add(entry_date,INTERVAL2year)fromstudent;//增加两年
selectaddtime(time,‘11-110:09:09’)fromstudent;//时间戳上增加,注意年后没有-
字符串相关函数CHARSET(str)返回字串字符集CONCAT(string2
[,...])连接字串INSTR(string,substring)返回substring在string中出现的位置,没有返回0UCASE(string2)转换成大写LCASE(string2)转换成小写LEFT(string2,length)从string2中的左边起取length个字符LENGTH(string)string长度REPLACE(str,search_str,replace_str)在str中用replace_str替换search_strSTRCMP(string1,string2)逐字符比较两字串大小,SUBSTRING(str,position
[,length])从str的position开始,取length个字符LTRIM(string2)RTRIM(string2)trim去除前端空格或后端空格
数学相关函数ABS(number2)绝对值BIN(decimal_number)十进制转二进制CEILING(number2)向上取整CONV(number2,from_base,to_base)进制转换FLOOR(number2)向下取整FORMAT(number,decimal_places)保留小数位数HEX(DecimalNumber)转十六进制LEAST(number,number2
[,..])求最小值MOD(numerator,denominator)求余RAND([seed])RAND([seed])
MySQL数据库高级部分
MySQL高级部分特殊数据类型表约束表连接索引触发器安全性DB设计
特殊数据类型EnumSetTextBlobTIMESTAMP默认值createtableusers( idinteger,namevarchar(20),likesenum('game','sleep','film'));showcreatetableusers;
MySQL约束约束数据类型告诉我们需要存储什么样子的数据,而约束告诉我们这些数据具体需要满足的规则。如:ageint,我们可以存储负整数,pricefloat,我们可以存储负小数,但是负数是不满足实际规则的,因此我们需要约束。常见约束检查约束(MySQL目前不支持)非空约束notnull唯一约束unique主键约束外键约束
MySQL约束定义唯一约束uniqueunique(列1,列2)定义非空约束notnull定义主键约束
primarykey:不允许为空,不允许重复删除主键:altertabletablenamedropprimarykey;定义主键自动增长
auto_increment主键一般的自动增长中在一起使用。定义外键约束constraintordersid_FKforeignkey(ordersid)referencesorders(id),删除外键约束altertableordersdropforeignkeyordersid_FK;增加外键约束
案例teacher教师表(主表)Student学生表(从表)createtableteacher( t_idintegerprimarykey, t_namevarchar(20), t_sa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客运火车站旅客服务规范考核试卷
- 供应链协同案例解析考核试卷
- 低温仓储库存管理与控制考核试卷
- 家用缝纫机维修实操考核试卷
- 土地利用规划中的社区开放空间设计考核试卷
- 创业投资风险防范体系建设与实施路径考核试卷
- 政府融资合同范本模板
- 自用高尔夫转让合同范本
- 工地叉车租凭合同范本
- 电气质量安全培训课件
- 【化学】高中化学手写笔记
- 胆管恶性肿瘤护理查房课件
- 电烤箱的使用方法ppt
- 中班:语言挤啊挤
- SCH壁厚等级对照表
- 2022新教科版六年级科学下册第二单元《生物的多样性》全部教案(共7节)
- PEP人教版小学英语单词四年级上册卡片(可直接打印)
- 年产630吨土霉素车间工艺设计
- 智慧金字塔立体篇第四册、第五册答案全解
- 上海市有线电视(卫星)接收设施安装许可证申请表
- 【股票指标公式下载】-【通达信】短线买点准(副图)
评论
0/150
提交评论