Mysql数据库笔记,mysql数据库

NVARCHAR(1000))INSERT TB1 (ID,也请兄弟们将你们遇到的类似问题一并列出,set @a = ’56,CHAR(10)  回车符,from dbo.sysobjects where id =,dbo,1、mysql服务启动不了,2、服务已经启动

(2)赋值时:SELECT @a=NaaSET
@a=Naa_________________________________地方三种方式,哪一种情势作用高?

8、实现编号自动拉长

sqlserver字符串拆分(split卡塔尔(قطر‎方法汇总

 转载

–方法0:动态SQL法 declare @s varchar(100),@sql varchar(1000)
set @s=’1,2,3,4,5,6,7,8,9,10′
set @sql=’select col=”’+ replace(@s,’,’,”’ union all select
”’)+””
PRINT @sql
exec (@sql)

 

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[f_splitSTR]’) and xtype in (N’FN’, N’IF’,
N’TF’))
drop function [dbo].[f_splitSTR]
GO
–方法1:循环截取法 CREATE FUNCTION f_splitSTR(
@s   varchar(8000State of Qatar,   –待分拆的字符串
@split varchar(10卡塔尔     –数据分隔符
)RETURNS @re TABLE(col varchar(100))
AS
BEGIN
 DECLARE @splitlen int
 SET @splitlen=LEN(@split+’a’)-2
 WHILE CHARINDEX(@split,@s)>0
 BEGIN
  INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
  SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,”)
 END
 INSERT @re VALUES(@s)
 RETURN
END
GO

 

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[f_splitSTR]’) and xtype in (N’FN’, N’IF’,
N’TF’))
drop function [dbo].[f_splitSTR]
GO
–方法2:使用有的时候分拆帮衬表法
CREATE FUNCTION f_splitSTR(
@s   varchar(8000卡塔尔,  –待分拆的字符串
@split varchar(10State of Qatar     –数据分隔符
)RETURNS @re TABLE(col varchar(100))
AS
BEGIN
 –创建分拆管理的帮忙表(顾客定义函数中只好操作表变量卡塔尔国
 DECLARE @t TABLE(ID int IDENTITY,b bit)
 INSERT @t(b) SELECT TOP 8000 0 FROM syscolumns a,syscolumns b

 INSERT @re SELECT SUBSTRING(@s,ID,CHARINDEX(@split,@s+@split,ID)-ID)
 FROM @t
 WHERE ID<=LEN(@s+’a’)
  AND CHARINDEX(@split,@split+@s,ID)=ID
 RETURN
END
GO

 

if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[f_splitSTR]’) and xtype in (N’FN’, N’IF’,
N’TF’))
drop function [dbo].[f_splitSTR]
GO
if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[tb_splitSTR]’) and
objectproperty(id,N’IsUserTable’)=1)
drop table [dbo].[tb_splitSTR]
GO
–方法3:使用长久性分拆帮助表法 –字符串分拆扶植表
SELECT TOP 8000 ID=IDENTITY(int,1,1) INTO dbo.tb_splitSTR
FROM syscolumns a,syscolumns b
GO
–字符串分拆管理函数
CREATE FUNCTION f_splitSTR(
@s     varchar(8000State of Qatar,  –待分拆的字符串
@split  varchar(10卡塔尔国     –数据分隔符
)RETURNS TABLE
AS
RETURN(
 SELECT col=CAST(SUBSTRING(@s,ID,CHARINDEX(@split,@s+@split,ID)-ID) as
varchar(100))
 FROM tb_splitSTR
 WHERE ID<=LEN(@s+’a’)
  AND CHARINDEX(@split,@split+@s,ID)=ID)
GO

 

–方法4:利用sql server2005的OUTER APPLY

CREATE FUNCTION [dbo].[ufn_SplitStringToTable]
(
  @str VARCHAR(MAX) ,
  @split VARCHAR(10)
)
RETURNS TABLE
    AS
RETURN
    ( SELECT    B.id
      FROM      ( SELECT    [value] = CONVERT(XML , ‘<v>’ +
REPLACE(@str , @split , ‘</v><v>’)
                            + ‘</v>’)
                ) A
      OUTER APPLY ( SELECT  id = N.v.value(‘.’ , ‘varchar(100)’)
                    FROM    A.[value].nodes(‘/v’) N ( v )
                  ) B
    )

 

备考表达:

方法4必得在sql server2006下才方可运作

Mysql数据库笔记,mysql数据库

一念之差记录:
1、mysql服务运维不了,进度意外终止 1067
   错误显示:can not connect to mysql server on local hosts(1061卡塔尔
   裁撤情势:原本是自己傻逼把本来的MySQL数据库给删掉了

2、服务一度运行,不过输入密码时 进不去
荒谬显示:ETiguanROTucson 1045 <28000>:Access denied for user’root’@’locahost'<using password:YES>
不留余地措施:

3、

暗中认可端口号:3306

把mysql的bin目录增多四意况变量中就足以在随机目录下都足以张开bin目录了。

事情未发生前见到的[email protected]这一个是因为别人改了提醒符:
mysql>prompt \[email protected] \h \d>
\u表示前段时间客户 \h表示服务器名称 \d表示近年来数据库

MySQL语句规范:

主要字和函数名称全体大写;
数据库名称、表的名称、字段的名称全体大写;
SQL语句必得以分好结尾。

加中括号表示能够回顾  
来妥贴前版本;
mysql>SELECT VERSION();
展现当前时光;
mysql>SELECT NOW();
展现当前客商;
mysql>SELECT USER();

校订原始密码:

开采命令提醒符分界面, 实行命令: mysqladmin -u root -p password 新密码
实践后提示输入旧密码达成密码修改, 当旧密码为空时直接按回车键确认就可以。

开始:

//创建数据库:
MySQL>CREATE DATABASE (IF NOT EXISTS卡塔尔(قطر‎ case;
//呈现已经存在的数据库;
MySQL>SH0W DATABASES;
//重命名数据库名称
先关闭数据库,然后找到文件夹所在目录,校正文件夹名称。
//呈现有个别数据库;
MySQL>SHOW CREATE DATABASE case;

//纠正数据库编码为utf8;
MySQL>ALTER DATABASE case CHATACTER SET=utf8;

//删除数据库:
MySQL>DROP DATABASE case;

改善和删除

改良暗中认可值: ALTETucson TABLE TB_NAME ALTER 字段名 SET DEFAULT 默认值; ALTER
TABLE TB_NAME ALTER 字段名 DROP DEFAULT ;
修改表名
ALTER TABLE 表名 RENAME TO 新名;
改革字段名
ALTETucson TABLE 表名 CHANGE 旧字段 新字段 新字段数据类型
校订字段数据类型
ALTEEscort 表名 MODIFY 属性名 数据类型
日增字段
ALTER TABLE 表名 ADD 字段1 字段1的条件 [FIRST | AFTER 字段2];
去除字段
ALTER TABLE 表名 DROP 字段;
改善字段的排列地方:
ALTEPAJERO TABLE 表名 MODIFY 字段1 字段1数据类型 FIKoleosST|AFTETucson 字段2;
更正表的存款和储蓄引擎:
ALTER TABLE 表名 ENGINE=引擎名
足够主键节制: ALTE揽胜极光 TABLE 表名 ADD P奥迪Q5IMA奥迪Q3Y KEY (外键名卡塔尔国 删除此之外键约束:
ALTE中华V TABLE 表名 DROP FOREIGN KEY (外键别称卡塔尔(قطر‎ 修正数据表的称号:
ALTER  TABLE table_name RENAME TO new_table_name
除去记录:
delete from users where id=1;
改善记录:
update 表名 set 字段=新值 where 条件;
update users set id=1 whers sex=1;

表字段的更改:
追加字段
ALTER table tb_name ADD column_name 属性 地方;        
  //扩充多个字段,暗许为空
alter table user add COLUMN new2 VARCHAR(20State of Qatar NOT NULL;  //扩张贰个字段,暗许不可能为空
去除字段
alter table user DROP COLUMN new2;                //删除一个字段

alter table user DROP column1,column2;                        //删除多列

改正一个字段
alter table user MODIFY new1 VARCHATucson(10卡塔尔(قطر‎;            //改革三个字段的类别
alter table user CHANGE new1 new4 int;              //修改二个字段的称呼,那时候必定就要双重钦点该字段的项目

第二章: 1、数据类型: 整型:
TINYINT -2^7->2^7-1
SMALLINT -2^15->2^15-1
MEDIUMINT -2^23->2^23-1
INT -2^31->2^31-1
BIGINT -2^63->2^63-1

浮点型:
FLOAT[(M,D)] m代表总位数,d代表小数点后位数
DOUBLE[(M,D)]

时刻日期型:(了然卡塔尔(قطر‎
YEAR 1个字节
TIME 3
DATE 3
DATETIME 8
TIMESTAMP 4

字符型:
CHAR(M) 0<=M<=255
VARCHAR(M)
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
ENUM(‘value1,’value2’…)
SET(‘value1′,’value2’,,,)

2、数据表的操作
张开数据库:
USE test(数据库名称)  
创办数据表:
CREATE TABLE (IF NOT EXISTS) table_name<数据表名字>(column_name<依照项目大小明确的列名>data_type<数据类型>,..卡塔尔国

mysql>USE TEST;
>CREATE TABLE tb1(
>username VARCHAR(20),
>age TINYINT UNSIGNED,<unsigned意思是毫无负数>
>salary FLOAT(8,2卡塔尔 UNSIGNED <float(8,2卡塔尔的意思是一齐有8位数,此中型Mini数点后有2位卡塔尔(قطر‎>
>);

查阅数据表列表
SHOW TABLES FROM test;

翻开数据表布局
SHOW COLUMNS FROM TB1;

插入记录INSERT
INSERT [INTO] tb1_name [(col_name,,,)] VALUES(val,,,)
INSERT TB1 (username ,salary) VALUES (‘tom’,26,919.3);
插入的也能够是算式比方:33-2 或许函数式:MD5(‘342’卡塔尔
也可以一次插入多条记下,记录间用,分开就行。

记录查找SELECT
SELECT * FROM TB1_NAME

3、空值与非空

NULL 字段值可以为空  NOT NULL 字段制止为空

成立表,设定某个量空与非空
>CREATE TABLE TB2(
>username VARCHAR(20) NOT NULL,
>age TINYINT UNSIGNED NULL,
>);

>INSERT TB2 VALUES(NULL,20);
<将报错说username不可为空>

4、自动编号(AUTO_INCREMENT)不能用char类型

自动编号,且需与主键组合使用
暗许境况下,初阶值为1,每便的增量为1;

5、主键节制(P福睿斯IMATiguanY KEY卡塔尔(قطر‎

每张数据表只存在二个主键
主键保证记录的唯一性
主键自动为not null

多少个字段联合主键:
PRIMARY KEY(username,age);

>CREATE TABLE TB2(
>id SMALLINT UNSIGNED  PRIMARY KEY AUTO_INCREMENT,

AUTO_INCREMENT(自动依次增加State of Qatar必得和P牧马人IMA本田UR-VY KRAV4Y一同使用,而PEscortIMAHavalY KEY则不必然要和AUTO_INCREMENT一同使用

>username VARCHAR(20) NOT NULL,
>);

>SHOW COLUMNS FROM TB3;

6、独一约束(UNIQUE KEY卡塔尔

独一限制
独一约束能够确认保障记录的唯一性
独一限定的字段可认为NULL
每张数据表能够存在五个独一限定
与主键的界别:一张数据表只可以有二个主键,而UNIQUE KEY能够有八个可以NULL
>CREATE TABLE TB4(
>id SMALLINT UNSIGNED AUTO_INCREMENT P君越IMA中华VY KEY,<自动编号字段>
>username VARCHAR(20) NOT NULL UNIQUE KEY,
>age TINYINT UNSIGNED
>);

插入记录:INSERT TB4(username,age卡塔尔(قطر‎ VALUES(‘TOM’,23卡塔尔;
当再次写入相像的笔录时,将唤起错误,因为username用了unique限定。简单来讲那一个节制在数额表里可以有四个。

7、默许节制(DEFAULT卡塔尔国

默认值
当插入记录时,若无分明性为字段赋值,则自动授予默许值。
>CREATE TABLE TB5(
>id SAMLLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
>username VARCHAR(20) NOT NULL UNIQUE KEY,
>sex ENUM(‘1′,’2′,’3’) DEFAULT ‘3’
>);

验证:
INSERT TB5(username)VALUES(‘TOM’);
将开掘自动给sex赋值3了。

8、外键限制

要求:
表与表之间的链接
父表和子表必需采用同一的积累引擎(InnoDBState of Qatar,而禁止行使一时表:
外键列和参照列必须持有相识的数据类型。个中数字的尺寸或是还是不是有标识位必得一致;而字符     的长度则能够差别
外键列和参照列必得成立索引。假如外键列不真实索引的话,MySQL将电动创立索引。

CREATE TABLE provinces(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20) NOT NULL
);
翻看数据表的蒸内燃机:show create table provinces;
CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARU KEY AUTO_INCREMENT,
username VARCHAR(10) NOT NULL,
//增加省份的话能够不用增添字段,只要增多关系表省份的号码就能够
pid SMALLINT UNSIGNED, 
FOREIGN KEY(pid)REFERENCES provinces(id)
);

查看索引:SHOW INDEXES FROM provinces\G;
SHOW INDEXES FROM users\G;

外键约束的参数:

CASCADE:从父表删除或更新且活动删除或更新字表中相称的行
SET NULL:从父表删除或更新行,并安装子表中的外键列为NULL,若是应用该选项,必得确定保证子表列未有一点名NOT NULL
TESTLANDICT(约束、限定卡塔尔(قطر‎:拒却对父表的删减或更新操作
NO ACTION:标准的SQL的非常重要字,在MySQL中REST福睿斯ICT相符。

为机关编号的字段赋值

能够挥洒成default 或然null
创建表:
CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
password VARCHAR(32) NOT NULL DEFAULT 123,
age TINYINT UNSIGNED NOT NULL,
sex BOOLEAN
);
插入记录:
INSERT users VALUES(NULL,’Jack’,159357,20,1);

9、

图片 1

图片 2

出错记录:
1、mysql服务运行不了,进程意外终止1067
错误彰显:cannotconnecttomysqlserveronlocalhosts(1061卡塔尔(قطر‎解决办法:…

(4卡塔尔条件判定时where 0(select count(*) from tb where ……)where
exists(select * from tb where ……)
_________________________________上边二种艺术,哪类艺术效能高?

select   tName, tSize,
  tPrice = stuff (( select ‘,’ + ltrim (tPrice) from tb  
     where tName = t.tName and tSize = t.tSize FOR XML PATH(”)),1,1,”), sum(tQty)
as tQty
from   tb t group by   tName, tSize 
—结果—————————– 
tName   tSize     tPrice     tQty
高瓦    880*110    22,25,22  3
高瓦    880*120    22        1 

  1. 假纵然单个赋值, 未有怎么好相比的话.可是, 假诺是为七个变量赋值,
    我测验过, SELECT 二遍性赋值, 比用SET 每个赋值功用好.

  2. SET ROWCOUNT和TOP 是肖似的, 包含推行的布署等都以同样的

  3. 以此貌似是exists快, 当然, 具体还要看您前面包车型客车子查询的法则,
    是或不是会援用外层查询中的对象的列.exists检查到有值就再次来到, 何况不回去结果集,
    count必要总括出富有知足条件的, 再回到贰个结出集, 所以平常景色下exists快.

  4. 相应是同样的

  5. 比较多是一致的

  6. except会去重新, not in
    不会(除非您在select中显式钦命卡塔尔(قطر‎except用于相比较的列是有所列,
    除非写子查询限定列, not in 未有这种状态8.
    intersect是三个查询皆有个别非重复值(交集卡塔尔国,
    union是八个查询结果的保有不重复值(并集State of Qatar

5、寻找某目录列表中有所下级目录,包括团结

(1State of Qatar叁回插入多条数据时:

2、搜索与某id周边的四条记下
Create table tb(id int ,cName char ( 10 ))
DECLARE @ID INT         
SET @ID = 7 
SELECT * FROM TB A WHERE id in 
( SELECT TOP 4 id FROM TB ORDER BY ABS (id – @id ))
ORDER BY ID 

(8卡塔尔(قطر‎INTE大切诺基SECT和UNION的界别?上边是邹老大的应对:

7、必要是得到种种ID对应postId的前三条

(5State of QatarNULLIF的利用—–同理它的反函数ISNULL的采纳update tb set fd=case when
fd=1 then null else fd endupdate tb set
fd=nullif(fd,1卡塔尔(قطر‎_________________________________下面二种艺术,哪个种类形式功效高?

DECLARE product_cursor CURSOR STATIC FOR 
SELECT cName FROM Product 
OPEN product_cursor
FETCH NEXT FROM product_cursor INTO @product
WHILE @@FETCH_STATUS = 0
BEGIN
 SELECT @message = ‘ ‘ + @product
 PRINT @message
 FETCH NEXT FROM product_cursor INTO @product
END
CLOSE product_cursor
DEALLOCATE product_cursor

(7)EXCEPT和Not in的区别?

3、按名称,规格分组,将单价数据统百分之十一行,并盘算数据
Create table [tb] (tName varchar(4), [tSize] varchar (7), [ tPrice ] int , [ tQty ] int )
insert [ tb ] 
select ‘高瓦’ , ‘880*110’  , 22 , 1 union all select ‘高瓦’ , ‘880*110’ , 25 , 1 union all 
select ‘高瓦’ , ‘880*110’ , 22 , 1 union all select ‘高瓦’ , ‘880*120’ , 22 , 1